laravel 拉腊维尔-在哪里

wsewodh2  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(100)

我需要得到的职位,职位有标签1和标签2(或更多)
我试过这个:

$posts = Post::whereHas('tags', function(Builder $query) {
    foreach (request('tags') as $tag) { // request('tags') = integer array
        $query->where('id', $tag);
    }
})->get();

但它不起作用。

atmip9wb

atmip9wb1#

如果你真的想得到post where has tag1ANDtag2你可以用下面的代码

$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();

但如果你的意思是想得到的职位,其中有标签1标签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();

相关问题