2015-03-06 19 views
9

Ho un modello Eloquent e nel modello sto usando una query di ambito per fare un join. Funziona tutto bene ma sto cercando di capire come nella query dell'ambito selezionare solo determinate colonne dalla tabella unita.Laravel 5 Eloquent scope unire e selezionare colonne specifiche

Ecco il metodo nel mio controller.

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

Ecco la query portata nel modello

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

Questo funziona ma restituisce tutto le colonne dai conti e degli utenti ma voglio solo tutte le colonne di conti e solo 2 colonne utenti.

Ho provato questo ...

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

Tuttavia questo restituisce solo i 2 campi degli utenti e ignora le colonne dai conti. So come farlo con 2 modelli diversi ma ciò significa che devo creare un modello inutile. Questa funzionalità di query sugli ambiti è ottima se riesco a capire questa parte.

L'aiuto è apprezzato.

risposta

13

Si può provare questo:

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

che è perfetto ... grazie! – bakamike

+0

Most Welcome :-) –