Laravel Eloquent 在联接中使用 WHERE 而不是 AND

Laravel Eloquent using WHERE instead of AND in Joins

我有以下查询:

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

我变成了Eloquent这样的方式:

$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

只需在 leftJoin 部分添加另一个 on 方法,而不是使用 where 方法。 -

尝试使用闭包并在其中添加条件:

$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();