Php 基于关系数据的查询| Laravel 5.4
例如,我正在寻找基于关系表信息获取信息的解决方案 我有两种型号User和Post 用户有许多帖子和 帖子属于用户 我想让那些拥有role=tasker和帖子少于5篇的用户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', '
请指导我如何使用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','