我正在使用whereHas()来匹配带有多个标签的餐厅菜肴。 虽然仅匹配一个标签,但效果很好,但是对于多个标签,执行时间会增加。 可能是什么原因?
我尝试了两种方法, 使用多个whereHas()
App\Dish
::whereHas('tags', function($q) {
return $q->where('title','tag1');
})
->whereHas('tags', function($q) {
return $q->where('title','tag2');
});
使用其中包含所有标签的标签
App\Dish
::whereHas('tags', function($q) {
return $q->whereIn('title',['tag1','tag2']);
},'=',2);
我已经尝试过索引标签表(tag_id和taggable_id)
答案 0 :(得分:1)
这样做的原因是,未对taggables表字段(tag_id,taggable_id和taggable_type)进行索引