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 并亲自了解如何实施解决方案。
在我的项目中,用户可以根据 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 并亲自了解如何实施解决方案。