5
我使用eloqent篩選一組的產品:多凡在
Product::whereIn('color', $color)->whereIn('size', $size)->whereIn('price', $price)->get();
上述每個變量是IDS
$color = [1,2,4,5]
我的問題是數組,這是低效的時用戶無法通過一組變量發送信息,比如他們不想要任何彩色濾光片,因此陣列可能是:
$color = [];
我試過 - > toSql和它生成的sql語句:
select * from `products` where `color` in (?, ?) and 0 = 1 and `price` in (?, ?, ?, ?, ?)
在上面沒有發送大小過濾器。
0 = 1是什麼意思?這是處理事情的低效方式嗎?
謝謝。所以我應該做一些像$ query = Product :: all();然後做一個檢查每個過濾器,如果不是空的$ query-> whereIn('myfilter',$ requestedFilter);這不會做多個查詢,而且效率低下? – panthro
@panthro no,'Product :: all()'會一次提取所有產品。你應該這樣做:'$ product = new Product;'然後檢查並添加條件。 – shaddy
所以它會像$ product = new Product; //檢查過濾器; $產品 - > get()方法; – panthro