Laravel 查询生成器按状态搜索

Laravel query builder search by status

在我的项目中,用户可以根据 3 个条件(已声明、进行中、已完成)过滤数据。

我在url参数[-1,0,1]中传递字符串,以获得有源过滤器。状态是根据来自数据库不同列的多个数据定义的,换句话说,信息不是原始存储在数据库中。

如何使用查询生成器检索过滤后的数据?

$ret = array_filter(explode(',',', $args), 'is_numeric');
$declared = in_array(1, $ret);
        $progress = in_array(-1, $ret);
        finished = in_array(0, $ret);

 if ($declared == false && $progress == false && $finished == false) {
          // do the treatment for this case....
        }

如果我必须处理所有这样的情况,我认为它不是很优化。

你有什么想法吗?

如果我理解正确的话,你有一个像这样的 url /your-link?status=n,其中 n 是一个从 -1 到 1 的整数。

现在,在您的控制器中,您可以执行如下操作:

public function yourFunction(Request $request) 
{
  if (in_array($request['status'], [-1, 0, 1])) {
     $data = DB::table('your-table')->where('status', $request['status'])->get();
  }
}

我建议您查看管道并尝试将它们与 Eloquent 或查询构建器一起使用。

查看此 tutorial 并亲自了解如何实施解决方案。