【问题标题】:Query on the base of relational data | Laravel 5.4基于关系数据的查询 |拉拉维尔 5.4
【发布时间】:2017-06-16 20:19:58
【问题描述】:

我正在寻找基于关系表信息获取信息的解决方案,例如

我有两个模型 UserPost

用户有很多帖子帖子属于用户

我希望获得具有 role = tasker 并且 帖子 少于 5 个

的用户

请指导我如何在 laravel 5.4

【问题讨论】:

  • 您是否尝试过先阅读查询?我相信您可以从here 构建您的答案
  • 是的,我阅读了文档,但找不到上面提到的解决方案。你能告诉我确切的解决方案吗?谢谢
  • 我无法为您提供确切的解决方案,但我假设您必须使用 group by 和 having 子句加入 post 表。希望这会有所帮助。

标签: php laravel-5 orm


【解决方案1】:

我在这里对您的数据库结构和字段名称做出一些假设,但这应该会让您接近:

User::whereHas('posts', function($query) {
      $query->select('posts.*')
            ->join('users', 'posts.user_id', '=', 'users.id')
            ->groupBy('users.id')
            ->havingRaw('sum(posts.id) < 5')
})->having('role', '=', 'tasker')->get();

可能并不准确,但这就是它的要点。

【讨论】:

  • 我是这样做的。 $users = DB::table('users') ->select(DB::raw('COUNT(posts.id) as total_posts'), 'users.*') ->leftJoin('posts', 'users. id', '=', 'posts.user_id') ->groupBy('users.id') ->having('total_posts', 'where('users.role', '=' , '任务者');
猜你喜欢
  • 2015-04-13
  • 2017-10-02
  • 2019-12-22
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 2018-10-14
相关资源
最近更新 更多