当 Laravel 查询中的搜索键不为空时执行 where 条件
Execute a where condition when search key is not null in Laravel query
我想 运行 仅当搜索键不为空时 select 查询的 where 条件。如果搜索键为空,则跳过 where 条件。这是我的代码,
$users = User::orderBy('id','asc')
->join('agents', 'users.id', '=', 'agents.user_id')
->select('users.id', 'users.first_name', 'users.last_name', 'users.email')
->where('agents.category', 'like', '%'.$category.'%')
->orWhere('agents.location', 'like', '%'.$operation.'%')
->get();
在这个查询中如果变量$category
为空则不需要运行那个where条件。并且 $operation
为 null 需要跳过 where 条件。如何解决这个问题?
尝试以下操作:
$users = User::orderBy('id','asc')->join('agents', 'users.id', '=', 'agents.user_id')->select('users.id', 'users.first_name', 'users.last_name', 'users.email');
if(!is_null($category)) {
$users = $users->where('agents.category', 'like', '%'.$category.'%')->orWhere('agents.location', 'like', '%'.$operation.'%');
}
$users = $users->get();
或:
$users = User::orderBy('id','asc')->join('agents', 'users.id', '=', 'agents.user_id')->select('users.id', 'users.first_name', 'users.last_name', 'users.email')->where('agents.location', 'like', '%'.$operation.'%');
if(!is_null($category)) {
$users = $users->orWhere('agents.category', 'like', '%'.$category.'%');
}
$users = $users->get();
我想 运行 仅当搜索键不为空时 select 查询的 where 条件。如果搜索键为空,则跳过 where 条件。这是我的代码,
$users = User::orderBy('id','asc')
->join('agents', 'users.id', '=', 'agents.user_id')
->select('users.id', 'users.first_name', 'users.last_name', 'users.email')
->where('agents.category', 'like', '%'.$category.'%')
->orWhere('agents.location', 'like', '%'.$operation.'%')
->get();
在这个查询中如果变量$category
为空则不需要运行那个where条件。并且 $operation
为 null 需要跳过 where 条件。如何解决这个问题?
尝试以下操作:
$users = User::orderBy('id','asc')->join('agents', 'users.id', '=', 'agents.user_id')->select('users.id', 'users.first_name', 'users.last_name', 'users.email');
if(!is_null($category)) {
$users = $users->where('agents.category', 'like', '%'.$category.'%')->orWhere('agents.location', 'like', '%'.$operation.'%');
}
$users = $users->get();
或:
$users = User::orderBy('id','asc')->join('agents', 'users.id', '=', 'agents.user_id')->select('users.id', 'users.first_name', 'users.last_name', 'users.email')->where('agents.location', 'like', '%'.$operation.'%');
if(!is_null($category)) {
$users = $users->orWhere('agents.category', 'like', '%'.$category.'%');
}
$users = $users->get();