Php 基于关系数据的查询| Laravel 5.4

Php 基于关系数据的查询| Laravel 5.4,php,laravel-5,orm,Php,Laravel 5,Orm,例如,我正在寻找基于关系表信息获取信息的解决方案 我有两种型号User和Post 用户有许多帖子和 帖子属于用户 我想让那些拥有role=tasker和帖子少于5篇的用户 请指导我如何使用laravel 5.4我在这里对您的数据库结构和字段名做了一些假设,但这应该可以让您接近: User::whereHas('posts', function($query) { $query->select('posts.*') ->join('users', '

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

我有两种型号UserPost

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

我想让那些拥有role=tasker帖子少于5篇的用户


请指导我如何使用laravel 5.4

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

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();
User::whereHas('posts',函数($query){
$query->select('posts.*')
->join('users','posts.user_id','=','users.id')
->groupBy('users.id')
->havingRaw('sum(posts.id)<5')
})->具有('role','=','tasker')->get();

可能不准确,但这是本文的要点。

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

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();
User::whereHas('posts',函数($query){
$query->select('posts.*')
->join('users','posts.user_id','=','users.id')
->groupBy('users.id')
->havingRaw('sum(posts.id)<5')
})->具有('role','=','tasker')->get();

可能不确切,但这就是要点。

您是否尝试过先阅读有关查询的内容?我相信你可以根据“是的”来构建你的答案,我读了文档,但找不到像上面提到的那样的解决方案。你能告诉我确切的解决办法吗?谢谢,我无法给出确切的解决方案,但我假设您必须使用GROUPBY和having子句连接post表。希望这能有所帮助。您是否先阅读了有关查询的内容?我相信你可以根据“是的”来构建你的答案,我读了文档,但找不到像上面提到的那样的解决方案。你能告诉我确切的解决办法吗?谢谢,我无法给出确切的解决方案,但我假设您必须使用GROUPBY和having子句连接post表。希望这能帮上忙。这是我做的$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','Here我是怎么做的。$users=DB::table('users')->select(DB::raw('COUNT as total_posts.id')),'users.*')->leftJoin('posts','users.id','=','posts.user_id')->groupBy('users.id')->having('total_posts','