我想先添加一个条件,然后再添加另一个where
查询,但是laravel不允许。我不需要以下内容。
function index()
{
$role = Auth::user()->role; //SEE_ALL, SEE_DEPT_A, SEE_DEPT_B
$q = Input::get('q');
if ($q != "") {
$user = User::where('name', 'LIKE', '%' . $q . '%')
->orWhere('email', 'LIKE', '%' . $q . '%')
->orderBy('name');
if ($role == "SEE_DEPT_A") {
$user->where('user_department', "A");
}
$user->paginate(10)->appends('q', $q);
}
return view('users.index')->with('data', ['users' => $user, 'q' => $q]);
}
答案 0 :(得分:5)
您应该使用when()
函数:
$user = User::where('name', 'LIKE', '%' . $q . '%')
->orWhere('email', 'LIKE', '%' . $q . '%')
->orderBy('name')
->when($role == "SEE_DEPT_A", function($query){
return $query->where('user_department', "A");
})->paginate(10)->appends('q', $q);
答案 1 :(得分:2)
您需要在使用where
子句的地方分配语句:
if ($role == "SEE_DEPT_A") {
$user = $user->where('user_department', "A");
}
如果if
语句没有运行(在false
的情况下),它将引发关于$user
不确定的错误
答案 2 :(得分:-1)
您可以插入多个条件,例如:
Expecting newline or semicolon