通过用户在laravel上的角色过滤用户的小系统

y4ekin9u  于 2021-06-23  发布在  Mysql
关注(0)|答案(3)|浏览(188)

我正在尝试在我的控制器中实现一个函数,以按角色过滤应用程序的用户
my controller 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]);
}

my view 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 '}'

任何帮助都将不胜感激!

cwxwcias

cwxwcias1#

你应该看看条件从句

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]);
 }

给when()的闭包中的指令只有在第一个参数的值为true时才会应用,这样您就可以编写复杂的条件指令,而不必中断查询链。
如果没有帮助,你应该提供更多关于你的erorr的信息。

hl0ma9xz

hl0ma9xz2#

失踪 ; 之后 ->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]);

}

缩进使代码更可读。缩进有不同的样式。你可以通过这个更好地理解他们

wqnecbli

wqnecbli3#

你错过了一个 ;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]);

         }

相关问题