首页 > 解决方案 > Laravel未定义变量中的ErrorException

问题描述

我是 Laravel 的新手,我现在正在使用关系,但我收到一个错误

ErrorException:未定义变量:用户(查看:D:\Softwares\WampServer\www\LaravelRelations\resources\views\users\index.blade.php)

控制器在 usersController.php

public function index()
{
    $users = \App\User::all();
    return view('users.index', compact($users));
}

路线定义在 web.php

Route::resource('users', 'usersController');

模型是 User.php Role.php 作为

<?php
//User.php
namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function role() {
        return $this->belongsTo('\App\Role');
    }
}


<?php
//Role.php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    public function user() {
        return $this->hasMany('\App\User');
    }
}

这是 index.blade.php 用户文件夹中的

<!DOCTYPE html>

<html>
    <head>
        <title></title>
    </head>
    <body>
        <ul>
            <?php
                foreach ($users as $user) {
                    echo "<li>" . $user->username . "is" . $user->role->role_name;
                }
            ?>
        </ul>
    </body>
</html>

错误在这一行foreach ($users as $user) {$users variable

标签: phplaravel

解决方案


您的代码的错误部分是compact($users)It must be compact('users')。固定代码是

public function index()
{
    $users = \App\User::all();
    return view('users.index', compact('users');
}

compact('users')等价于['users' => $users]


推荐阅读