您好我试图在我的控制器中使用以下功能在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
我不知道为什么我收到此错误我很明显通过这行命令将$ users传递给我的视图:
return view('membre2',['users'=> $users]);
任何帮助将不胜感激!谢谢
答案 0 :(得分:0)
使用 $ users-&gt; get()时会返回收藏实例,您必须指定 $ users = $ users-&gt; 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