我正在尝试在我的控制器中实现一个函数,以按角色过滤应用程序的用户
我的控制器ProfileController.php具有以下功能:
public function membrevis() {
$filter = isset($_GET['filter']) ? $_GET['filter'] : null;
$users = DB::table('users')
->join('user_role', 'user.id', '=', 'user_role.user_id')
->join('roles', 'users_roles.role_id', '=', 'roles.id')
->where('users.valid','=',0)
->select('users.*','roles.description');
if ($filter != null) {
$users->where('users.name','like','%'.$filter.'%')
->orWhere('roles.description','like','%'.$filter.'%')
}
$users->get();
return view('member2',['users'=> $users]);
}
我的观点membre2.blade.php有以下HTML代码:
<form action="/membre2" method="get">
<input type="text" name="filter" >
<button type="submit">filter</button>
</form>
我得到的错误是:
Parse error: syntax error, unexpected '}'
任何帮助将不胜感激!
答案 0 :(得分:0)
您在;
声明
if
public function membrevis() {
$filter = isset($_GET['filter']) ? $_GET['filter'] : null;
$users = DB::table('users')
->join('user_role', 'user.id', '=', 'user_role.user_id')
->join('roles', 'users_roles.role_id', '=', 'roles.id')
->where('users.valid','=',0)
->select('users.*','roles.description');
if($filter != null) {
$users->where('users.name','like','%'.$filter.'%')
->orWhere('roles.description','like','%'.$filter.'%');
}
$users->get();
return view('member2',['users'=> $users]);
}
答案 1 :(得分:0)
在;
->orWhere('roles.description','like','%'.$filter.'%')
更新缩进的代码
public function membrevis()
{
$filter = isset($_GET['filter']) ? $_GET['filter'] : null;
$users = DB::table('users')
->join('user_role', 'user.id', '=', 'user_role.user_id')
->join('roles', 'users_roles.role_id', '=', 'roles.id')
->where('users.valid','=',0)
->select('users.*','roles.description');
if($filter != null)
{
$users->where('users.name','like','%'.$filter.'%')
->orWhere('roles.description','like','%'.$filter.'%');
}
$users->get();
return view('member2',['users'=> $users]);
}
缩进使您的代码更具可读性。有不同的压痕风格。您可以通过this
更好地理解它们答案 2 :(得分:0)
您应该查看Conditional Clauses
public function membrevis() {
$filter = isset($_GET['filter']) ? $_GET['filter'] : null;
$users = DB::table('users')
->join('user_role', 'user.id', '=', 'user_role.user_id')
->join('roles', 'users_roles.role_id', '=', 'roles.id')
->where('users.valid','=',0)
->when($filter, function ($query) use ($filter) {
return $query->where('users.name','like','%' . $filter . '%')
->orWhere('roles.description','like','%' . $filter . '%');
})
->select('users.*','roles.description')
->get();
return view('member2',['users'=> $users]);
}
只有当第一个参数被评估为true时才会应用给予when()的闭包中的指令,这样你就可以编写复杂的条件指令而不必破坏查询链。
如果没有帮助,您应该提供有关您的错误的更多信息。