[英]Laravel: One relation, multiple models
我有一個“用戶”模型,每個用戶都有“帖子”。 現在有不同類型的帖子,例如“ TextPost”,“ VideoPost”等。
我想獲取用戶的所有帖子,如下所示:
$user->posts()->get()
這應該返回具有正確類的對象數組,例如這樣的數組:
[App\\VideoPost{}, App\\TextPost{}]
我嘗試按照文檔中的描述使用多態關系,但是它不起作用。 有任何想法嗎?
對於特定的用例,Laravel中實際上沒有關系類型。 在這種情況下,最簡單的操作是為每種帖子類型創建一個單獨的hasMany關系,然后編寫一個返回所有結果組合的函數。
因此,您將在User類中得到如下所示的結果:
public function videoPosts()
{
return $this->hasMany(App\VideoPost::class);
}
public function textPosts()
{
return $this->hasMany(App\TextPost::class);
}
public function getPosts()
{
return $this->textPosts->concat($this->videoPosts);
}
然后,您可以只為要添加的其他所有帖子類型鏈接concat調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.