如何解决此集合实例上不存在属性 [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 举报,一经查实,本站将立刻删除。