簡體   English   中英

使用 Laravel 和 Eloquent ORM 查詢案例

[英]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_setwhereRaw

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM