2016-06-28 4 views
0

У меня есть запрос mysql, и я хочу передать их в laravel, но я не знаю, как использовать AND в laravel.Laravel 5 - query builder И

Mysql:

SELECT * FROM `items_sizes` left join `items` on `items_sizes`.`id_item` = `items`.`id` left join `budget__items` on `items_sizes`.`id` = `budget__items`.`id_itemSize` and `budget__items`.`id_budget` = 1 where `items`.`active` = 1 and `budget__items`.`id_budget` is null order by `items_sizes`.`updated_at` asc 

Laravel:

$itemsSizes = ItemsSize::leftJoin('items', 'items_sizes.id_item', '=','items.id') 
     ->leftJoin('budget__items','items_sizes.id', '=', 'budget__items.id_itemSize') 
     ->*AND*('budget__items.id_budget', '=', $id) 
     ->where('items.active', '=', 1) 
     ->whereNull('budget__items.id_budget') 
     ->orderBy('items_sizes.updated_at', 'asc') 

Спасибо-х

+0

Вы пробовали '-> LeftJoin ('budget__items', 'budget__items.id_budget', '=', $ id) 'вместо '-> * AND * ('budget__items.id_budget', '=', $ id)'? – linuxartisan

ответ

0

Пожалуйста, попробуйте следующее:

$itemsSizes = ItemsSize::leftJoin('items', 'items_sizes.id_item', '=','items.id') 
    ->leftJoin('budget__items', function($join) use($id) { 
     $join->on('items_sizes.id', '=', 'budget__items.id_itemSize') 
     ->where('budget__items.id_budget', '=', $id); 
    }) 
    ->where('items.active', '=', 1) 
    ->whereNull('budget__items.id_budget') 
    ->orderBy('items_sizes.updated_at', 'asc'); 
+0

Спасибо за ответ. эта работа, если я поместил значение int в $ id, иначе у меня есть эта ошибка «Столбец не найден: 1054 Неизвестный столбец« 3 »в разделе« on »» ... число 3 - это значение $ id, а не столбец. – user3242861

+0

'$ id' не был доступен в контексте анонимной функции. Я добавил' use ($ id) '. Пожалуйста, пересмотрите свой код! –

+0

Я добавил к использованию ($ id), но даю эту ошибку ... – user3242861

Смежные вопросы