如何解决Laravel 9.48.0中未定义变量的问题
解决Laravel 9.48.0中视图未定义变量$users的问题
核心问题排查与修复
你的代码存在两处关键错误,导致视图无法获取$users变量并正确访问数据:
控制器变量传递语法错误
控制器中返回视图时,数组键值对的分隔符使用了错误的->,正确的语法应该是=>。DB查询结果的访问方式错误
DB::select()返回的是关联数组集合,而非Eloquent模型对象,视图中不能用对象属性的方式($user->id)访问数据,需改用数组索引方式($user['id'])。
修正后的完整代码
控制器代码
public function student(){ $users = DB::select('select * from details'); // 方式一:使用正确的数组键值对语法传递变量 return view('welcome', ['users' => $users]); // 方式二:使用compact函数更简洁(推荐) // return view('welcome', compact('users')); }
视图代码
@foreach ($users as $user) <tr> <td>{{ $user['id'] }}</td> <td>{{ $user['email'] }}</td> <td>{{ $user['status'] }}</td> <td>{{ $user['subject'] }}</td> </tr> @endforeach
可选优化方案
如果希望保持视图中$user->id的对象访问方式,可以改用Eloquent模型查询:
- 创建
Detail模型(对应details表):
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Detail extends Model { protected $table = 'details'; }
- 控制器中修改查询逻辑:
public function student(){ $users = \App\Models\Detail::all(); return view('welcome', compact('users')); }
此时视图中原来的$user->id写法即可正常使用。
内容的提问来源于stack exchange,提问作者DANI S
相关产品推荐
相关产品推荐

