0
我想創建一個在線目錄,例如,人們可以通過網站搜索並找到具有特定類型的所有外賣。例如:Laravel 5雄辯 - 凡在加入表
「印」,
「中國」
等。
我有3個表:
業務
標籤
商務標籤。
我的模型如下:
class Business extends Model
{
protected $table = 'businesses';
protected $fillable = [
'business_name', 'postcode'
];
public function tags()
{
return $this->belongsToMany('App\Tags');
}
}
的問題是,每當我來進行搜索,並嘗試做一個whereIn
的問題是,它需要永遠載入,其實,這不是甚至沒有負載。例如:
$business = Business::whereHas('tags', function($tag) use ($request) {
if($request->get('terms'))
{
$tag->whereIn('tags.name', ['chinese']);
}
})->get();
所以我的問題是這樣的:
我有剛剛超過1萬行存儲在表中的數據。此表分爲三個「商業」,「標籤」,「商業標籤」。上述過程要花這麼長時間來完成,可能是因爲我用的是whereHas('tags')
和whereIn
因此,我怎麼去使用的語法如下:
$business = Business::where(function ($business) use ($request) {
// Search for businesses with a specific tag, passed from request
});
這可能嗎?
如果這不起作用,考慮循環的全部('name','chinese') - > orWhere('name','value');' – TheFallen
我嘗試過使用**或者**替代** where where **:'$ tag->要做到這一點,它需要2分鐘才能找到任何東西。數據庫中有7-10k條記錄,大多數(如果不是全部)記錄有1-2個標籤,那麼所有業務都有25k標籤 - 任何想法? – Phorce
你在業務和標籤之間的SQL關係中有索引嗎? – TheFallen