不是专门的 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/

10-11 01:40