Неопределенное свойство: Illuminate \ Database \ MySqlConnection :: $ name - PullRequest
0 голосов
/ 08 июня 2018

Привет, я пытаюсь сделать небольшую системную фильтрацию в laravel, используя следующую функцию в моем контроллере для фильтрации пользователей по их ролям или их именам, вот мой текущий код:

profilecontroller.php:

public function membrevis()
{
    $filter = isset($_GET['filter']) ? $_GET['filter'] : null;
    $users = DB::table('users')
        ->join('user_role', 'users.id', '=', 'user_role.user_id')
        ->join('roles', 'user_role.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('membre2',['users'=> $users]); 
}

В моем представлении есть форма ввода, в которой вы можете ввести имя или роль членов, которых вы пытаетесь фильтровать:

membre2.blade.php:

<form action="/profilecontroller/membrevis" method="get">
    <input type="text" name="filter" >
    <button type="submit">filter</button>
</form> 

@foreach($users as $users) 

   <h4 class="media-heading">{{ $users->name }}</h4>

@endforeach

Я получаю ошибку Undefined property: Illuminate\Database\MySqlConnection::$name

Я понятия не имею, почему я получаю эту ошибку, я, очевидно, передаю $ пользователей на мой взглядс этой командной строкой:

return view('membre2',['users'=> $users]);

Любая помощь будет оценена!спасибо

1 Ответ

0 голосов
/ 08 июня 2018

при использовании $ users-> get () возвращает Collection экземпляр, вам необходимо назначить $ users = $ users-> get () ;Исправленный код

    public function membrevis()
    {
        $filter = isset($_GET['filter']) ? $_GET['filter'] : null;
        // also can use this structure $filter = isset($_GET['filter']) ?? null;
        $users = DB::table('users')
            ->join('user_role', 'users.id', '=', 'user_role.user_id')
            ->join('roles', 'user_role.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 = $users->get();

        return view('membre2',['users'=> $users]); 
    }

также в блейде исправьте его

@foreach($users as $user) 

   <h4 class="media-heading">{{ $user->name }}</h4>

@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...