У меня есть следующий запрос:Laravel Eloquent с помощью WHERE вместо И в Присоединяется
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
Perfect. Просто интересно, почему «andWhere» не может работать, и все равно нужно называть закрытие? – Volatil3
Ну, 'where()' внутри закрытия соединения - это другое 'where()', чем внешнее. «Join-where» добавит дополнительное предложение 'on', но использует привязку для значения. Если вы будете использовать 'on()' дважды, он будет искать столбец с именем '1' (' $ user_id'). Надеюсь, что объяснение поможет;) – lukasgeiter
Странная проблема. Я не могу получить доступ к столбцам таблицы JOINed 'items_subscribers'. Результат показан здесь: http://pastebin.com/i4mk7P0z – Volatil3