2017-05-29 131 views
1

我想知道是否可以做一個在左聯接的查詢,如果它存在,而不必在同一個「級別」的所有列作連接表去爲一個屬性(此沒有任何關係)Laravel選擇對象屬性

例如

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

相反的各個領域一起返回,

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

並且具有使其返回

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

編輯:如果可能的話,以避免環路出於顯而易見的原因......我知道這是可能的,在不得已將使用它們而不是使用循環會幫忙很多

+1

不,這是不可能的(這樣的)。這就是爲什麼你應該使用關係來代替連接。 – devk

回答

2

您使用雄辯的用戶表。爲什麼不使用關係?它確實是你想要的。創建一個新的Post模型。然後將以下關係添加到您的User型號。

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

現在,您可以用後獲取用戶像這樣

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

結果是你想要什麼。在我的示例中,我也使用User,因爲您已經使用user。其結果將包含如您在示例所示員額posts而不是post對象,你可以通過改變關係的方法名稱更改該屬性的名稱。我用過這些,因爲它們是正確的約定。

+0

我以用戶和帖子爲例。 –

+0

@SérgioReis您可以將其與任何其他類型的相似關係進行交換,並且您會得到相同的結果。 – Sandeesh

+0

在實際sitiuation想像這樣,用戶有一個類型,可以說用戶$> ID_TYPE,有時ID_TYPE爲空(不存在關聯還) –