当前位置: 首页 > 知识库问答 >
问题:

一对多然后急切加载一个阵列Laravel雄辩ORM

沈开畅
2023-03-14

使用Laravel和雄辩的ORM,我想创建一个属于特定用户(登录的用户)的所有帖子和相应评论的数组或对象。结果将与Respons一起使用e::eloquent();返回JSON。

基本上是伪代码:

All Posts by user ::with('comments').

Posts by Auth::user()->id ::with('comments').

我有我的数据库设置每个通常与用户的表,评论表和帖子表。评论表有post_id,帖子表有user_id。

在没有Laravel的情况下,要做到这一点的漫长道路是这样的:

SELECT * FROM posts WHERE user_id = 'user_id'
foreach($result as $post) {
    SELECT * FROM comments WHERE posts_id =  $post->id
    foreach($query as $comment) {
        $result[$i]->comments[$n] = $comment
    }
}

但是我想用Laravel的雄辩ORM来完成它。

共有1个答案

苏嘉歆
2023-03-14

看起来您甚至不需要嵌套的渴望加载,您只需要修改带有返回的查询,因此:

$posts = Post::with('comments')->where('user_id', '=', 1)->get();

您可以对Eloquent系统中的大多数方法进行菊花链,通常它们只是返回一个Fluent查询对象。

(我还没有测试过它,但我相当肯定它会起作用。另外,您不能在::all()上进行测试,因为这样会调用-

另外,急切加载文档涵盖了嵌套的急切加载,因此您可以加载所有用户的帖子和评论:

您甚至可以加载嵌套关系。例如,假设我们的作者模型具有“联系人”关系。我们可以从书本模型中加载这两种关系,如下所示:

$books = Book::with(array('author', 'author.contacts'))->get();
 类似资料:
  • 我对雄辩的质询有意见。我正在使用渴望加载(一对多多态关系)来排序“historyable”。日期见下文。 我试着得到这样的结果 是否有可能运行嵌套懒惰渴望加载Laravel? 产品型号 历史模型 产品控制器 我有这样的数据库

  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可

  • 如何制作一对多访问器? 用户模型: 历史模型: 如果我真的喜欢下面,它将工作。 用户模型: 历史模型: 控制器: 刀片视图: 它起作用了! 但是,我应该怎么做,如果我想要这个: 我喜欢 历史模型: 它不工作! 如果我编码像 它会回来的 此集合实例上不存在属性[happy]。 如果我编码像 它会回来的 未定义的属性:Illumb\Database\Eloquent\Relations\HasMany

  • 我有帖子表和评论表。我想得到所有的帖子与它的评论和以下返回只是帖子有评论: 更新 例如 ID帖 1个职位1 2后2 id post\u id评论 1萨姆勒大学评论 Post::with('comments')只返回有注释的帖子,它只返回第一篇帖子,因为第二篇帖子没有注释,我想获取所有帖子(有注释或没有注释)

  • 拉威尔说: 我需要的是这样的东西 我们可以在一个关系中加载多个关系。 这有可能吗?

  • 我有许多对许多用户与城市地区之间的联系。我也有连接城市区域的区域(一个城市区域只能连接一个区域)。 我有这样的数据库结构: 使用者 id 城市地区 id 姓名 area_id 城市用户 id cityarea_id user_id 地区 id 姓名 接下来我有模特 用户 城市地区 地区 问题: 如何让所有用户与雄辩? 谢谢!!