2015-03-06 15 views
9

Mam model Epoquent i w modelu używam kwerendy zakresu do łączenia. To wszystko działa dobrze, ale próbuję dowiedzieć się, jak w kwerendzie kwerendy wybrać tylko niektóre kolumny z połączonej tabeli.Laravel 5 Epoquent scope dołącz i wybierz konkretne kolumny

Oto metoda w moim kontrolerze.

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

Oto zapytanie zakres w modelu

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

To działa, ale zwraca wszystkie kolumn z kont i użytkowników, ale chcę tylko wszystkie kolumny z kont i tylko 2 kolumny z użytkowników.

Próbowałem to ...

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

Jednak to zwraca tylko te 2 pola od użytkowników i ignoruje kolumny z rachunków. Wiem, jak to zrobić z 2 różnymi modelami, ale to oznacza, że ​​muszę stworzyć bezużyteczny model. Ta funkcja zapytań o zakres jest świetna, jeśli mogę po prostu zorientować się w tej części.

Pomoc jest doceniana.

Odpowiedz

13

Możesz spróbować tego:

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

To idealne ... dzięki! – bakamike

+0

Najbardziej Witamy :-) –