【问题标题】:Laravel: One relation, multiple modelsLaravel:一个关系,多个模型
【发布时间】:2018-04-15 08:45:09
【问题描述】:

我有一个模型“用户”,每个用户都有“帖子”。现在有不同类型的帖子,例如“TextPost”、“VideoPost”等。

我想像这样获取用户的所有帖子:

$user->posts()->get()

这应该返回一个具有正确类的对象数组,例如像这样的数组:

[App\VideoPost{}, App\TextPost{}]

我尝试使用文档中描述的多态关系,但它不起作用。有任何想法吗?

【问题讨论】:

标签: php laravel polymorphism relationship


【解决方案1】:

对于您的特定用例,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 调用。

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2016-02-21
    • 2019-08-01
    • 2023-03-27
    相关资源
    最近更新 更多