过滤器的组合可以是可选的 laravel eloquent 关系

Combinations of filters can be optional laravel eloquent relationships

我想根据传递的查询参数过滤回复,查询参数可以是post_id、comment_id和reply_ids数组都可以是可选的,可以用作组合

 $query = Post::where('user_id', auth()->id());
    if ( isset($data['reply_ids']) ) {
        $query = $query->with('posts.comments.replies')->whereHas('posts.comments.replies', function($query) use ($data){
            $query->whereIn('id', $data['reply_ids']);
        });
    }

现在,如果我想使用 comment authors 再次过滤,那是在评论 table 上,如果我想添加 post author 的过滤器,那将是在帖子 table,我如何添加那些条件,并且仍然是可选的?

只需在下面添加另一个 if 语句。这些将是可选的,因为您在第一次过滤操作之前定义了 $query

我需要使用另一个预加载 with 以便查询将基于所有选定的组合构建,因此最终代码将类似于

$query = Post::where('user_id', auth()->id());
if ( isset($data['reply_ids']) ) {
    $query = $query->with('posts.comments.replies')->whereHas('posts.comments.replies', function($query) use ($data){
        $query->whereIn('id', $data['reply_ids']);
    });
}
$query = $query->with(['posts' => function($query){ $query->where('status', 'pending'); }])

$query->get()