我有一个查询,需要在另一个表“ history”的基础上添加一列(is_found),如果product_id存在于表“ history”上,则列值(is_found)变为1,否则其值保持为0 。
这是我的查询:
Product::select(
'products.id as product_id',
'products.name',
'products.desc',
'products.image',
'products.barcode',
'categories.name as category_name',
'categories.id as category_id',
)
->leftJoin(
'categories',
'products.category_id',
'=',
'categories.id'
)
尝试一下:
Product::select(
'products.id as product_id',
'products.name',
'products.desc',
'products.image',
'products.barcode',
'categories.name as category_name',
'categories.id as category_id',
\DB::raw('IF(history.product_id, 1, 0) AS is_found')
)
->leftJoin(
'categories',
'products.category_id',
'=',
'categories.id'
)
->leftJoin('history', 'products.id','=','history.product_id')
或:
Product::select(
'products.id as product_id',
'products.name',
'products.desc',
'products.image',
'products.barcode',
'categories.name as category_name',
'categories.id as category_id',
\DB::raw('IF((select product_id from history where history.product_id = products.id), 1, 0)')
)
->leftJoin(
'categories',
'products.category_id',
'=',
'categories.id'
);