我有以下查询:
select i.name,i.id itemId,its.item_id from items i
LEFT JOIN items_subscribers its
ON i.id = its.item_id
and its.user_id = 1
我将其转化为雄辩的方式:
$records = Item::where('items_subscribers.user_id',$user_id)
->leftJoin('items_subscribers','items.id','=','items_subscribers.item_id')
->select(['items.name','items.id','items_subscribers.item_id as selected_item_id'])->get();
当我运行print_r(DB::getQueryLog());
时,它会打印以下查询:
select `items`.`name`, `items`.`id`, `items_subscribers`.`item_id` as `selected_item_id` from `items` left join `items_subscribers` on `items`.`id` = `items_subscribers`.`item_id` where `items_subscribers`.`user_id` = ?
查询没有产生任何结果。我想使用AND而不是WHERE。我是怎么做到的?
我正在使用Laravel 4.2
答案 0 :(得分:1)
尝试使用闭包并在其中添加条件:
$records = Item::leftJoin('item_subscribers', function($join) use ($user_id){
$join->on('items.id','=','items_subscribers.item_id');
$join->where('items_subscribers.user_id', '=', $user_id);
})
->select(['items.name','items.id','items_subscribers.item_id as selected_item_id'])
->get();
答案 1 :(得分:0)
只需在on
部分添加另一个leftJoin
方法,而不是使用where
方法。 - https://stackoverflow.com/a/26714765/3208719