Laravel 如果请求不为空添加 orWhere
Posted
技术标签:
【中文标题】Laravel 如果请求不为空添加 orWhere【英文标题】:Laravel if request not empty add orWhere 【发布时间】:2018-12-02 04:21:00 【问题描述】:public function index(Request $request)
if ($request->has('deleted'))
$assistants = Assistant::onlyTrashed()->where(1);
if ($request->has('firstName'))
$assistants = $assistants->orWhere('firstname', 'LIKE', $request->firstName.'%');
if ($request->has('lastName'))
$assistants = $assistants->orWhere('lastname', 'LIKE', $request->lastName.'%');
if ($request->has('email'))
$assistants = $assistants->orWhere('email', 'LIKE', $request->email.'%');
else
$assistants = Assistant::all()->where(1);
if ($request->has('firstName'))
$assistants = $assistants->orWhere('firstname', 'LIKE', $request->firstName.'%');
if ($request->has('lastName'))
$assistants = $assistants->orWhere('lastname', 'LIKE', $request->lastName.'%');
if ($request->has('email'))
$assistants = $assistants->orWhere('email', 'LIKE', $request->email.'%');
return $this->showAll($assistants);
我正在尝试检查 firstName、lastName 或 email 是否不为空,请使用 LIKE 命令添加到查询。
但它返回一个错误:
类型错误:函数的参数太少 Illuminate\Support\Collection::where(), 1 次通过
在 Laravel 5.6 中。
【问题讨论】:
【参考方案1】:你有多个问题。
where(1)
不是有效的查询生成器调用。你似乎也不需要这个。
您不需要重复所有这些request->has()
调用,将它们放在 if ... else ... 下方。
Assistants::all()
将实际运行查询并返回集合中的所有行。使用Assistants::query()
返回一个查询生成器实例。
【讨论】:
我应该写原始查询吗?我找不到 ::query()以上是关于Laravel 如果请求不为空添加 orWhere的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 中使用 orWhere() 和 where