[英]query case with Laravel and Eloquent ORM
簡單地說,我想從數據庫中獲取特定大小的產品
每個產品都有尺寸列:其中包含(例如):“XS,M,L”
我運行這個語句
return DB::table('products')->where([['sizes', 'LIKE', "%".$size."%"]])->paginate(1);
例如,如果 $size = "L" ,它會獲取帶有 "L" 或 "XL" 或 "XXL" 的任何產品 - 這在我的陳述中是正常的
我現在詢問只獲取特定大小的方法
我建議在其他表的單獨行中使用存儲值,以便於查詢。
雖然你通過find_in_set
和whereRaw
DB::table('products')
->whereRaw("FIND_IN_SET('L',sizes)")
->paginate(1);
如果你想獲取確切的大小,那么你可以嘗試
return DB::table('products')->where(['sizes', $size])->paginate(1);
使用=
而不是Like
。
對於更多用例,這里是不同的示例。
WHERE sizes LIKE 'L%' //Finds any values that starts with "L"
WHERE sizes LIKE '%L' //Finds any values that ends with "L"
WHERE sizes LIKE '%or%' //Finds any values that have "or" in any position
WHERE sizes LIKE '_r%' //Finds any values that have "r" in the second position
WHERE sizes LIKE 'a_%_%' //Finds any values that starts with "a" and are at least 3 characters in length
WHERE sizes LIKE 'a%o' //Finds any values that starts with "a" and ends with "o"
您的代碼中也有錯字
改變這個
return DB::table('products')->where([['sizes', 'LIKE', "%".$size."%"]])->paginate(1);
對此
return DB::table('products')->where('sizes', 'LIKE', "%".$size."%")->paginate(1);
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.