【问题标题】:Laravel Create Collection from CollectionLaravel 从集合创建集合
【发布时间】:2020-07-03 03:09:45
【问题描述】:

我有一个 Post 模型,它与 Topic 模型具有多对多关系。在我的控制器中,我检索了特定用户的帖子集合。现在,我正在尝试创建与该帖子集合相关的所有主题的集合。

我的帖子集是这样定义的......

// Get all posts created by this user
$posts = Post::where('user_id', Auth::user()->id)->get()->sortByDesc('created_at');

如果我这样做 $post->topic->topic_name 我会得到该特定帖子的主题名称,但我想要一个主题的集合。应该有3个。我尝试了以下没有运气...

foreach ($posts as $post)
{
   $topics = $post->topic;
}

$topics 集合只是作为第一个主题停止,不包括其余部分。我错过了什么?

谢谢!

【问题讨论】:

  • 一篇文章有​​多个主题??在这种情况下,你有数据透视表吗??
  • 请分享你们的关系

标签: laravel


【解决方案1】:

你说它是多对多关系,那么在你的 Post 模型中你应该像这样定义你的关系

public function topics()
{
    return $this->belongsToMany('App\Topic');
}

然后在您的查询中做主题而不是主题。

【讨论】:

  • 另外,我建议您像这样更改 sortByDesc 的顺序 ->sortByDesc('created_at')->get() 以便该顺序可以在数据库级别而不是 PHP 级别发生.
猜你喜欢
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
相关资源
最近更新 更多