【发布时间】:2021-05-09 22:23:59
【问题描述】:
我正在使用 Laravel 8 开发我的项目,在这个项目中,我在用户模型和角色模型之间应用了 OneToMany 关系,如下所示:
User.php:
public function role()
{
return $this->belongsTo(User::class);
}
Role.php:
public function users()
{
return $this->hasMany(Role::class);
}
现在我想编辑用户,所以在edit.blade.php,我添加了这一行来获取用户拥有的角色的名称:
<option selected="selected">{{ $user->role->name }}</option>
请注意,我已经在 edit 方法处压缩了user:
public function edit(User $user)
{
return view('admin.users.edit', compact('user'));
}
目前所有用户都有一个角色ID。
但现在我得到了这个错误:
试图获取非对象的属性“名称”(查看:edit.blade.php)
那么这里有什么问题?如何获取用户拥有的角色名称?
如果你想看的话,这也是roles 表的迁移:
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('slug');
$table->timestamps();
});
}
这是add_fk_to_users_table迁移:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedBigInteger('role_id')->nullable()->unsigned();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
});
}
我非常感谢你们对此提出的任何想法或建议......
提前致谢。
【问题讨论】:
标签: php laravel relational-database one-to-many laravel-8