我们刚刚在一个旧的生产存储过程中遇到过这个问题(这里还有很多内容,但这只是其逻辑的一个部分).为什么有人会从表中选择前0行?这是某种我不熟悉的SQL黑客或技巧吗?
我正在使用eloqent过滤一组产品:
Product::whereIn('color', $color)->whereIn('size', $size)->whereIn('price', $price)->get();
Run Code Online (Sandbox Code Playgroud)
上述每个变量都是一个id数组
$color = [1,2,4,5]
Run Code Online (Sandbox Code Playgroud)
我的问题是,当用户无法通过一组变量发送时,这是否效率低,说他们不想要任何颜色过滤器,因此数组将是:
$color = [];
Run Code Online (Sandbox Code Playgroud)
我试过 - > toSql并生成sql语句:
select * from `products` where `color` in (?, ?) and 0 = 1 and `price` in (?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)
在上面没有发送大小过滤器.
0 = 1是什么意思?这是处理事情的低效方式吗?