作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据库架构中有如下表,
它是数据透视表吗?
如何在 Eloquent 模型中定义关系?
class Role extends Model {
public $timestamps = false;
public function permissions() {
return $this->hasMany('App\Models\RolePermission', 'permissions_id');
}
}
这是定义关系的正确方法吗?请帮助我理解。
和
class RolePermission extends Model {
public $timestamps = false;
public function role() {
return $this->belongsTo('App\Models\Role', 'roles_id');
}
}
最佳答案
问题是您需要将表命名为 permission_role
以遵循设计编译指示。
Schema::create('roles', function(Blueprint $table){
$table->increments('id');
$table->string('name');
$table->timestamps();
});
Schema::create('permissions', function(Blueprint $table){
$table->increments('id');
$table->string('name');
$table->timestamps();
});
那么您只需要permission_role
表:
Schema::create('permission_role', function(Blueprint $table){
$table->increments('id');
$table->integer('permission_id')->unsigned();
$table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
$table->integer('role_id')->unsigned();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
});
然后你只需像这样设置模型:
class Role {
public function permissions() {
return $this->hasMany(App\Permission::class);
}
}
当然还有你的权限类别
class Permission {
public function role() {
return $this->belongsToMany(App\Role::class);
}
}
关于php - 如何在 laravel 5.3 eloquent 模型中定义关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39921437/
我是一名优秀的程序员,十分优秀!