使用Laravel和Eloquent ORM查询案例

时间:2018-04-26 15:14:01

标签: php mysql laravel eloquent

简单地说,我想从数据库中获取具有一定大小的产品

每个产品都有尺寸栏:其中包含(例如):" XS,M,L"

我运行此声明

for i in itertools.takewhile(lambda x: x < 100, primes):
  print i

例如,如果$ size =&#34; L&#34; ,它用&#34; L&#34;取出任何产品。或&#34; XL&#34;或&#34; XXL&#34; - 这与我的陈述一样正常

我现在问一下获取特定大小的方法

2 个答案:

答案 0 :(得分:2)

我建议在其他表的不同行中使用商店值,以便查询。

虽然您使用find_in_set

whereRaw执行此操作
     DB::table('products')
     ->whereRaw("FIND_IN_SET('L',sizes)")
     ->paginate(1);

答案 1 :(得分:0)

如果您想获取确切的尺寸,可以尝试

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);

希望这有帮助。