如何在Laravel WHERE子句中的运算符中使用?

如何在Laravel WHERE子句中的运算符中使用?,laravel,laravel-query-builder,Laravel,Laravel Query Builder,我正在使用Laravel构建一个高级表过滤器。客户端向服务器发送一个过滤器数组,以应用于模型并返回结果 在服务器端,我使用以下代码生成where子句中使用的条件数组: $conditionArray=array(); foreach($filtersList as $filter) { $whereArray[]=array($filter['Column'], $filter['Condition']), $filter['Value']); } $data = User::wher

我正在使用Laravel构建一个高级表过滤器。客户端向服务器发送一个过滤器数组,以应用于模型并返回结果

在服务器端,我使用以下代码生成where子句中使用的条件数组:

$conditionArray=array();
foreach($filtersList as $filter) {
    $whereArray[]=array($filter['Column'], $filter['Condition']), $filter['Value']);
}
$data =  User::where($conditionArray)->get();
这与简单运算符(
=
=
!=
)的预期效果一样,但当我尝试使用高级运算符(
介于
之间;
中)时,查询失败


我的问题是如何将
IN
BETWEEN
添加到
WHERE
子句中?有没有更好的方法来完成我想做的事情?

Laravel query builder对中的
操作符之间的
有自己的方法。您应该查看更多信息

我有一个类似的问题,我用一个稍微不同的方法解决了它。这里有一个例子:

$query=MyModel::newQuery();
foreach($statements作为$statement){
开关($statement['operator'])){
“介于”之间的情况:
$query->whereBetween([…]);
打破
案例“in”:
$query->where([…]);
打破
/*其他情况*/
违约:
$query->where(/*…*/);
打破
}
}
$models=$query->get();
结果类似于这句话:

$models=MyModel::where([…])->其中([…])->[…]->get();

无论如何要小心。。。这种方法可能会导致性能问题,因此请尽量避免在选择过滤器时给予太多的自由。

这将适用于所有情况,谢谢,但我想知道级联while子句之间是否存在性能差异:
MyModel::where(cond1)->where(cond2)->where(cond3)->get()
并使用条件数组:
MyModel::where($conditionArray)->get()
如果您看到,您将看到
addArrayOfWhere
方法执行相同的操作。它连接“where”子句列表,但您只能执行
列表或
语句列表。还有一点封装,就是这样。