【问题标题】:Undefined property: Illuminate\Database\MySqlConnection::$name未定义的属性:Illuminate\Database\MySqlConnection::$name
【发布时间】:2018-11-18 22:13:39
【问题描述】:

您好,我正在尝试使用我的控制器中的以下函数在 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]);

任何帮助将不胜感激!谢谢

【问题讨论】:

  • @foreach($users as $user) 然后 {{ $user->name }}

标签: php mysql sql laravel laravel-5


【解决方案1】:

当使用 $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

【讨论】:

  • 你试试我的答案吗??
  • 您好,感谢您的评论,我完全按照您的要求做了,它解决了我的问题!!但是该功能似乎仍然不起作用我不知道为什么每当我过滤名称或角色名称时它不返回任何内容,你能告诉我该怎么做吗?
  • 什么是 $filter 值??
  • 可以是用户名,也可以是用户角色名
  • 没有 $users->where('users.name','like','%'.$filter.'%') ->orWhere('roles.description','like', '%'.$filter.'%');什么是 dd($users->toArray());
猜你喜欢
  • 2021-09-15
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 2016-09-05
  • 2016-11-23
  • 1970-01-01
相关资源
最近更新 更多