过滤器的组合可以是可选的 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()
我想根据传递的查询参数过滤回复,查询参数可以是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()