我需要得到的帖子,其中的帖子有tag1和tag2(或更多)
我试过了:
$posts = Post::whereHas('tags', function(Builder $query) {
foreach (request('tags') as $tag) { // request('tags') = integer array
$query->where('id', $tag);
}
})->get();
但是行不通。
如果你真的想要得到tag1AND标签2你可以做下面的代码
$posts = Post::query();
foreach (request('tags') as $tag) { // request('tags') = integer array
$posts = $posts->whereHas('tags', function(Builder $query) use ($tag) {
$query->where('id', $tag);
});
}
$posts = $posts->get();
但是如果你想要得到的帖子有tag1或标签2 .
您可以使用whereIn
方法:
$posts = Post::whereHas('tags', function(Builder $query) {
$query->whereIn('id', request('tags'));
})->get();
或替代使用orWhere
$posts = Post::whereHas('tags', function(Builder $query) {
foreach (request('tags') as $tag) { // request('tags') = integer array
$query->orWhere('id', $tag);
}
})->get();