laravel - 如何使用 laravel 雄辩的`when`而不是 if-elseif 来获得两个值的条件
问题描述
我怎样才能转换这个:
if(isset($from) && isset($to))
{
$query->where('column1', $from)->where('column2', $to);
}
elseif(isset($from))
{
$query->where('column1', $from);
}
elseif(isset($to))
{
$query->where('column1', $to);
}
when
在 Laravel 中使用这样的东西:
...
->when(isset($from) && isset($to), function($query) use ($from, $to)
{
$query->where('column1', $from)->where('column2', $to);
})
->elseWhen(isset($from), function($query) use ($from)
{
$query->where('column1', $from)->where('column2', $from);
})
->elseWhen(isset($to), function($query) use ($to)
{
$query->where('column2', $to);
});
谢谢
解决方案
你可以这样做when
:
...
->when(isset($from), function($query) use ($from)
{
return $query->where('column1', $from);
})
->when(isset($to), function($query) use ($to)
{
return $query->where('column2', $to);
});
在这种情况下,如果设置了两个值,那么您将首先获得完全相同的结果,如果条件:)
推荐阅读
- containers - 使用 fakeroot 构建的奇点给出了一个无效的参数错误
- r - 如何为 R 中的分类数据生成自举置信区间?
- excel - 添加一个“。” 到工作簿的名称而不更改其在 VBA 中的格式
- python - 无法为使用 PEP 517 且无法直接安装的 opencv-python 构建轮子
- c# - EF Core - 从两个不同的表中获取值并将它们合并到一个查询中
- sql - 获取每一秒的总数(Postgres分层查询实践)
- python - 文件只保存最终值而不是所有值
- python - 使用 Python 每月存款的复利
- python - Flask socketIO 连接已建立但未路由
- typescript - 函数中动态构造对象的窄返回类型