Laravel中Undefined property: stdClass::$name错误求助
问题分析与解决方案
嘿,我一眼就发现问题出在哪啦!你遇到的Undefined property: stdClass::$name错误,根源完全在你的控制器代码里。
错误原因
你在listar方法里连续三次给$users变量赋值,每次都只查询单个字段:
$users = DB::table('users')->select('name')->orderBy('updated_at', 'desc')->get(); $users = DB::table('users')->select('email')->orderBy('updated_at', 'desc')->get(); $users = DB::table('users')->select('phone')->orderBy('updated_at', 'desc')->get();
这意味着前两次查询的结果都被第三次覆盖了,最终$users里的每个对象只有phone属性,完全没有name和email字段。所以视图里调用$u->name和$u->email时,自然会找不到对应的属性,抛出错误。
修复方案
只需要把三次查询合并成一次,一次性选中你需要的所有字段即可:
public function listar(){ $users = DB::table('users') ->select('name', 'email', 'phone') // 一次性选中三个需要的字段 ->orderBy('updated_at', 'desc') ->get(); return view('你的视图文件名', compact('users')); // 记得把数据传递给视图! }
另外要确认你在控制器最后把$users传递给了视图(如果之前没写这行的话),不然视图也拿不到数据。
你的视图代码本身是没问题的,只要控制器传递的$users包含name、email、phone三个字段,就能正常显示数据库里的用户信息啦。
内容的提问来源于stack exchange,提问作者Mar
相关产品推荐
相关产品推荐

