不是专门的 Laravel 问题,但我使用的是 Laravel Query Builder。我有一个 MySQL 数据库列,其中包含一长串状态中的任何一个。在过滤列表时,我只是将一个或多个状态作为数组传递给查询...
$statusArray = ['active','inProgress'];
DB::table('mytable')->whereIn('status', $statusArray)->get();
但是,当不过滤时,我希望返回所有状态,因此我希望像...
$statusArray = [*];
有没有一种简单的方法来处理这个问题,还是我需要为查询动态构建
whereIn
子句? 最佳答案
当您想查看特定状态时,将它们添加到 $statusArray
$statusArray = ['active','inProgress'];
当你想获得所有状态时,将
$statusArray
声明为空数组$statusArray = array();
然后在 eloquent 中添加条件,如下所示
DB::table('mytable')->when(!empty($statusArray), function($q, $statusArray) {
return $q->whereIn('status', $statusArray);
})->get();
关于MySQL查询其中列是特定值或任何值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52292560/