【问题标题】:Laravel nested 'with ' function complex query problemLaravel嵌套'with'函数复杂查询问题
【发布时间】:2020-08-01 05:00:19
【问题描述】:

在 Laravel 中,我想从表 1 中获取与表 2 具有“一对多”关系的数据,而表 2 又与表 3 具有“一对多”关系。

例如,我有一个 USER 表、POSTS 表和 COMMENTS 表。 一个用户有很多帖子,每个帖子都有很多 cmets。

我只想运行一个查询,该查询将返回每个用户,他们的帖子(单个)具有最新评论(单个)(在该用户所有帖子中的所有 cmets 中)。

我已经尝试过 Laravel 嵌套的“with”函数,但在构建查询时遇到了问题。

【问题讨论】:

  • 请看图更好理解
  • 请下次裁剪图片

标签: php mysql sql laravel eloquent


【解决方案1】:

请尝试以下代码

 $user = USERS::with(['posts' =>function($query) { $query->with(['comments'])->orderBy('created_at','desc')->first(); } ])->where('user_id',$id)->get();

希望它有效。

如果您遇到任何错误,请告诉我

【讨论】:

  • 没有人,使用 first() 方法获取单个评论会返回空帖子。我以前试过这个。 PS我正在尝试为一组用户而不是单个用户获取结果。
  • 我认为,您可以通过删除最后的 where 条件来获得它。我希望你已经在模型中拥有了类似 hasMany 的方法
【解决方案2】:

使用如下加入方法:

$comments = User::join('posts', 
 'posts.user_id', '=', 'users.id')->join('comments', 'comments.post_id', '=', 
 'posts.id')->orderBy('comments.created_at', 'desc')->first();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-05
    • 2021-02-02
    • 2018-07-29
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    相关资源
    最近更新 更多