2013-08-26 4 views
1

Я пытаюсь получить таблицу с вложенным наследованием и отфильтровать для определенных столбцов. И не может найти ho, чтобы легко это сделать.Laravel Eloquent Получить определенные столбцы из вложенных таблиц с помощью()

У меня есть таблица магазин ведьма имеет много места (и расположение имеет один город) и многие действия

Я хочу, чтобы все эти один раз с красноречивым и фильтром для конкретных столбцов.

это как я фильтровал таблицу магазинов, но не знаю, как отфильтровать расположение и действия таблиц.

$this->shop->with('locations')->with('actions')->get(array('id','name','recommended','category_id')); 

мне нужно что-то вроде этого:

$this->shop 
->with('locations',Location::with('city', City::get(array('id','name')))->get(array('id','name'))) 
->with('actions', Action::get(array('id','name')))->get(array('id','name'));); 

ответ

0

См Laravel Eloquent: How to get only certain columns from joined tables

Самый простой способ сделать это фильтровать столбцы в модели (как указано в верхней ответ связан выше). Однако это может быть неудобно, если вы хотите создавать динамические запросы.

Теоретически вы должны быть в состоянии сделать:

$this->shop->with(array('locations' => function($query) { 
              $query->select('id', '...etc...'); 
             } 

... к сожалению, это не похоже на работу для выбора(); когда я тестировал его, я получил пустой массив. Однако другие методы работают, например,

$this->shop->with(array('locations' => function($query) { 
              $query->orderBy('id', 'DESC'); 
             } 

Возможно, вам будет лучше использовать Fluent Query Builder. Это не так «сексуально» или модно, как ORM, но мне легче использовать его при работе с динамическими запросами.

+0

Ну, я пытаюсь присоединиться к таблице с построением запроса, но он не работает. $ stores = DB :: table («магазины») -> join ('locations', 'locations.shop_id', '=', 'shops.id') -> join ('actions', 'actions.shop_id ',' = ',' shops.id ') -> выберите (' shops.id ',' locations.id ',' actions.id '); – zajca

+0

Как вы связываете их вместе? Я попытался добавить еще одну функцию в массив, но это не работает. благодаря – Notflip

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