Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel口若悬河,关系受限_Laravel_Eloquent - Fatal编程技术网

Laravel口若悬河,关系受限

Laravel口若悬河,关系受限,laravel,eloquent,Laravel,Eloquent,我一直在使用雄辩现在只有一段时间,我不知道如何做到这一点。假设我有常见的帖子、用户和评论关系,我想返回所有帖子的列表,并且在该列表中还指示登录用户对哪些帖子发表了评论 通过使用whereHas()或with()查询,我只能返回包含用户评论的帖子,或者返回包含所有用户评论的所有帖子。但是,我怎样才能得到所有只有auth用户评论的帖子呢?甚至只是一个布尔值,指示用户注释的存在 我觉得这应该是非常简单的,我只是没能在文档或这些板上找到答案 可能是这样的: $posts = Post::whereHas

我一直在使用雄辩现在只有一段时间,我不知道如何做到这一点。假设我有常见的帖子、用户和评论关系,我想返回所有帖子的列表,并且在该列表中还指示登录用户对哪些帖子发表了评论

通过使用
whereHas()
with()
查询,我只能返回包含用户评论的帖子,或者返回包含所有用户评论的所有帖子。但是,我怎样才能得到所有只有auth用户评论的帖子呢?甚至只是一个布尔值,指示用户注释的存在


我觉得这应该是非常简单的,我只是没能在文档或这些板上找到答案

可能是这样的:

$posts = Post::whereHas('comments',function($commentQuery){
            $commentQuery->whereHas('user',function($userQuery){
                $userQuery->where('id',Auth::user()->id);
            });
        })->get();

也许是这样的:

$posts = Post::whereHas('comments',function($commentQuery){
            $commentQuery->whereHas('user',function($userQuery){
                $userQuery->where('id',Auth::user()->id);
            });
        })->get();

答案似乎是某种嵌套查询,但这个查询仍然只返回带有Auth/User注释的帖子,而不是其他的。@JonathanMarasco我想我误解了这个问题。为了确保您能够判断某个
Post
对象是否有经过身份验证的用户发布的注释,是否正确?感谢您查看此内容。是的,这是正确的-我想返回一个所有帖子的列表,其中只显示带有auth用户评论的帖子。根据文档
whereHas()
“向查询中添加计数/存在条件”,这将限制结果。我想我需要的是更像
with()
的东西,它急切地加载关系,但据我所知,它不需要参数。答案似乎是某种嵌套查询,但这一个仍然只返回带有Auth/User注释的帖子,而不是其他的。@JonathanMarasco我想我误解了这个问题。为了确保您能够判断某个
Post
对象是否有经过身份验证的用户发布的注释,是否正确?感谢您查看此内容。是的,这是正确的-我想返回一个所有帖子的列表,其中只显示带有auth用户评论的帖子。根据文档
whereHas()
“向查询中添加计数/存在条件”,这将限制结果。我想我需要的是更像
with()
的东西,它可以加载关系,但据我所知,它不需要参数。