2017-05-29 1 views
1

Ich würde gerne wissen, ob es möglich ist, eine linke Join in einer Abfrage zu tun, und wenn es existiert, anstatt alle Spalten in der gleichen "Ebene" haben die verbundene Tabelle als eine Eigenschaft gehen (Dies ohne Beziehungen)Laravel wählen Objekt als Eigenschaft

Zum Beispiel

$users = user::leftJoin("posts","users.id","=","posts.user_id")->get(); 

Statt jedes Feld zusammen zurückzukehren,

["id"/*This actually gets messed up if select doesn't choose wich to use*/, 
    "name", 
    "age", 
    /*Now post fields*/ 
    "tile", 
    "date_posted" 
    ... 
] 

und nachdem er zurückkehren

["id", 
    "name", 
    "age", 
    "post"=>[ 
    "id", 
    "tile", 
    "date_posted" 
    ... 
    ] 
] 

Edit: Wenn möglich, Schleifen aus offensichtlichen Gründen zu vermeiden ... Ich weiß, dass es möglich ist, und in letzter Instanz wird sie nutzen, aber nicht mit Schleifen viele

helfen würden
+1

Nein, das ist nicht möglich (so). Das ist genau der Grund, warum Sie Beziehungen für diesen Zweck verwenden sollten, statt sich dem beizutreten. – devk

Antwort

2

Sie verwenden eloquent für die Benutzer Tabelle. Warum nicht Beziehungen verwenden? Es macht genau das, was du willst. Erstellen Sie ein neues Post Modell. Fügen Sie dann die folgende Beziehung zu Ihrem User Modell hinzu.

public function posts() 
{ 
    return $this->hasMany(Post::class); 
} 

Sie können nun die Benutzer mit Post holen wie so

$users = User::with('posts')->get(); 

Das Ergebnis ist genau das, was Sie wollen. Auch ich habe User in meinem Beispiel verwendet, wo Sie user verwendet haben. Das Ergebnis enthält das Objekt "Beiträge" als posts anstelle von post. Wie Sie im Beispiel gezeigt haben, können Sie diesen Eigenschaftsnamen ändern, indem Sie den Namen der Beziehungsmethode ändern. Ich habe diese verwendet, da sie die richtige Konvention sind.

+0

Ich habe Benutzer und Beiträge als Beispiel verwendet. –

+0

@ SérgioReis können Sie dies mit jeder anderen ähnlichen Beziehung austauschen, und Sie erhalten das gleiche Ergebnis. – Sandeesh

+0

In der tatsächlichen Situation vorstellen, wie ein Benutzer hat einen Typ, sagen wir $ user-> id_type, und manchmal der id_type ist null (es gibt noch keine Zuordnung) –

Verwandte Themen