微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

此集合实例上不存在属性 [roles]在多对多关系中

如何解决此集合实例上不存在属性 [roles]在多对多关系中

您好,我正在学习多对多的关系,我阅读了官方文档并使用了约定, 但我不能建立多对多的关系,我得到该属性不存在的错误

我该如何解决

迁移

Schema::create('role_user',function (Blueprint $table) {
        $table->id();
        $table->foreignId('user_id')->constrained()->onUpdate('cascade')->onDelete('cascade');
        $table->foreignId('role_id')->constrained()->onUpdate('cascade')->onDelete('cascade');
        $table->timestamps();
    });
}

用户

   Schema::create('users',function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

角色

 Schema::create('roles',function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });

型号:

用户

 public function roles(){
        return $this->belongsToMany(role::class,'role_user','user_id','role_id');
    }

角色

public function users(){
        return $this->belongsToMany(User::class,'role_id','user_id');
    }

查询

$v = User::get();
 dd($v->roles);

解决方法

$v = User::get(); 返回 users集合。如果您有一个用户,例如 User::find(1),您将有权访问该特定用户的角色。

另一个选择是

$users = User::with('roles')->get();

foreach ($users as $user) {
    $userRoles = $user->roles;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。