2016-10-14 3 views
1

Status-Beziehung leer/null in Illuminate Eloquent ORM haben - GelöstDatensätze ausschließen, die außerhalb Laravel

I Illuminate ORM außerhalb Laravel bin mit. Also, weit gut funktioniert, aber ich habe Probleme mit der Beziehung. Ich möchte die Datensätze ausschließen, deren Profil und KontoDetails Beziehung ist leer oder null. Momentan entpacke ich manuell diese Felder und erstelle ein anderes Array und gebe es zurück, aber es ist eine Menge Verarbeitung, also gibt es eine Möglichkeit, wo ich eine Bedingung für eine Relation stellen kann, wenn sie null oder leer ist, diese Datensätze ausschließen.

Hier ist mein Code

$users = \App\User::where('account_type_id', 2) 
    ->with('profile', 'accountDetails') 
    ->get() 
    ->toArray(); 

In Benutzermodell, ich habe zwei Beziehungen geschaffen dh. Profil und accountDetails

public function profile() 
{   
    return $this->hasOne('\App\UserProfile', 'user_id', 'id'); 
} 

public function accountDetails() 
{ 
    return $this->hasMany('\App\Wallet', 'user_id', 'id'); 
} 

Vielen Dank im Voraus. :)

Jede Hilfe zu diesem bitte.

Antwort

4

Eine Möglichkeit, dies zu tun, ist die Verwendung eines Join-Mechanismus.

$users = \App\User::join('profile','profile.user_id','=','user.id') 
    ->join('wallet','wallet.user_id','=','user.id') 
    ->where([ 
     ['user.account_type_id','=',2], 
     ['profile.id','=',null], 
     ['wallet.id','=',null] 
    ]) 
    ->get() 
    ->toArray(); 

Joins: https://laravel.com/docs/5.2/queries#joins


Zweite Methode, eloquent Beziehungen verwenden,

Auf dem Benutzermodell:

public function profile() { 
    return $this->hasOne('\App\UserProfile', 'user_id', 'id'); 
} 

public function accountDetails(){  
    return $this->hasMany('\App\Wallet', 'user_id', 'id'); 
} 

Dann wird die Abfrage:

$users = \App\User::where('account_type_id', 2) 
    ->has('profile') 
    ->has('accountDetails') 
    ->get() 
    ->toArray(); 

has Abfragemethode: https://laravel.com/docs/5.2/eloquent-relationships#querying-relations

+0

2. Methode hier ist der Weg zu gehen –

Verwandte Themen