我有一个API来跟踪照片和标签.每张照片可以有N个标签,一个标签可以链接到N张照片.这是使用3个表完成的:
- 照片的桌子.
- 泰格的桌子.
- photo_标签关系表.
现在,我正在努力用一组标签来标记所有照片.我的 idea 是用标签列表向我的API发出请求,并获得至少包含所有标签的照片列表.
我一直在找whereIn
号接线员.
这是我的代码(现在都是硬编码的):
$photos = Photo::whereHas('tags', function (Builder $query) {
$query->whereIn('tag', ['a5', 'mate', 'Brillante']);
})->get();
return response()->json($photos, 200);
当我执行它时,它会返回与一个标记匹配的所有照片,我只需要拥有所有请求标记的照片(在本例中为a5,mate).
我正在研究拉威尔9号.
编辑:
正如我建议的那样,蒂姆·刘易斯try 过循环:
$tags = array("a5", "mate", "Brilante");
$photoQuery = Photo::query();
foreach($tags as $tag) {
\Log::debug($tag);
$photoQuery->whereHas('tags', function($query) use ($tag) {
return $query->where('tag', $tag);
});
}
$photos = $photoQuery->get();
现在它返回了一个空列表,我想是因为它正在寻找的照片只有我在数组上硬编码的3个标签.
编辑2:
这些改变似乎是正确的,但出于某种原因,postman 没有向我展示任何改变的结果,这些改变是我问题的解决方案.