【问题标题】:Laravel 4 Conditional RelationshipLaravel 4 条件关系
【发布时间】:2013-08-22 09:26:17
【问题描述】:

我需要能够指定关系的条件(一对多)。

例如存在;我们有一个有很多评论的帖子,但我只想要用户 A 发表评论的帖子,然后返回帖子对象。

我目前能想到的唯一方法是使用 Fluent 查询,它不会返回我想要的 Post 对象!

编辑:

评论已由用户 A 发表。发表评论的用户与 Post 的关系不是直接关系。它将通过 Comment 表。

重新编辑:

是否也可以说有不同的帖子?而不是返回 3 个相同的 Post 对象?

【问题讨论】:

  • 你可以试试这个$post=Posts::with('comments')->where('user_id','=',$user_id)->get() 这将返回来自post and comments table 的数据,仅供特定用户使用

标签: php laravel laravel-4


【解决方案1】:

您可以查询关系。你最终会得到这样的结果:

$postsWithComments = $user->posts()->has('comments', '>=', 1)->get();

以下是文档摘录:http://laravel.com/docs/eloquent

查询关系

访问模型的记录时,您可能希望根据关系的存在来限制结果。例如,您希望提取所有至少有一条评论的博客文章。为此,您可以使用 has 方法:

选择时检查关系

$posts = Post::has('comments')->get();

您还可以指定运算符和计数:

$posts = Post::has('comments', '>=', 3)->get();

【讨论】:

  • OP 想要过滤帖子,因此他只获取由特定用户发表的评论的帖子。
  • 这应该符合预期。
  • 嗯,这是直接从文档中得出的。你必须能够从这些例子中学习。无论如何,我添加了一个示例,说明它最终的样子。
  • 是的,正如@cuewizchris 所说,我需要由特定用户制作的。编辑原始帖子。
  • 第一个代码示例已经涵盖了这一点。 ;) 祝你的项目好运。 @cuewizchris 谢谢 :)
猜你喜欢
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 2013-10-28
  • 2021-03-10
相关资源
最近更新 更多