属性 [角色] 在此集合实例上不存在。在多对多关系中
Property [roles] does not exist on this collection instance. in a many-to-many relationship
您好,我正在学习多对多关系,我阅读了官方文档并使用了约定,
但我无法建立多对多的关系,我得到 属性 不存在的错误。
我该如何解决?
迁移
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_user','role_id','user_id');
}
查询:
$v = User::get();
dd($v->roles);
$v = User::get();
returns 合集 users
。如果您有一个用户,例如 User::find(1)
,您将有权访问该特定用户的角色。
另一种选择是
$users = User::with('roles')->get();
foreach ($users as $user) {
$userRoles = $user->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_user','role_id','user_id');
}
查询:
$v = User::get();
dd($v->roles);
$v = User::get();
returns 合集 users
。如果您有一个用户,例如 User::find(1)
,您将有权访问该特定用户的角色。
另一种选择是
$users = User::with('roles')->get();
foreach ($users as $user) {
$userRoles = $user->roles;
}