簡體   English   中英

Laravel:一種關系,多種模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM