2015-03-06 4 views
9

У меня есть модель Eloquent, и в модели я использую запрос области для соединения. Все это работает отлично, но я пытаюсь выяснить, как в запросе области выбрать только определенные столбцы из объединенной таблицы.Laravel 5 Eloquent scope join и select specific columns

Это метод в моем контроллере.

$accounts = Account::creator()->get(); 

Вот область запроса в модели

public function scopeCreator($query) { 
     $query->leftJoin('users','users.id','=','accounts.creator_id'); 
} 

Это работает, но он возвращает все столбцы со счетов и пользователей, но я хочу только все столбцы со счетов и только 2 колонки из пользователи.

Я попытался это ...

public function scopeCreator($query) { 
     $query->leftJoin('users','users.id','=','accounts.creator_id')->select(array('id','user_name')); 
} 

Однако это возвращает только те 2 поля от пользователей и игнорирует столбцы со счетов. Я знаю, как это сделать с помощью двух разных моделей, но это значит, что я должен создать бесполезную модель. Эта функциональность запроса области полезна, если я могу просто вычислить эту часть.

Справка приветствуется.

ответ

13

Вы можете попробовать это:

->select('accounts.*', 'users.id as uid','users.user_name'); 
+1

Это отлично ... спасибо! – bakamike

+0

Большинство Добро пожаловать :-) –