在基于 SaaS 的系统的背景下,我正在使用 Laravel 的 Morph 关系技术 设计一个角色管理系统。该系统涉及为公司实体和管理员用户分配角色。我计划使用单个角色表来实现此目的,并且我正在考虑该表的结构。
具体来说,我正在寻找有关如何确保数据库级别的数据完整性的指导。我打算在角色表中使用两列(如果有其他最佳方法请建议我):
我主要关心的是如何在数据库中建立外键(FK)和索引,将这些列链接到各自的表,确保保持数据完整性。
我经常发现这方面令人困惑,并且我非常感谢您帮助理解实现 FK 和索引的最佳实践,以保证这种情况下的数据完整性
我举个例子吧
我们有这些
roleable_id | 角色类型 | 名字 |
---|---|---|
1 | 公司::班级 | 角色名称1 |
2 | 管理员::班级 | 角色名称2 |
然后如何确保这个组合(Company::class + 1)要么指向公司表/模型,要么指向管理模型/表。
我只是对添加索引时迁移相关的东西感到好奇,Fk 的
不可能,但您可以在
deleting
某个型号上使用该事件
class User extends Model
{
/**
* The "booted" method of the model.
*/
protected static function booted(): void
{
static::deleting(function (User $user) {
// ...
});
}
或者你也可以使用模型观察者 生成者
php artisan make:observer UserObserver --model=User
然后自己编辑
class UserObserver
{
/**
* Handle the User "deleted" event.
*/
public function deleted(User $user): void
{
// ...
}
}
然后将其添加到您的 EventServiceProvider
public function boot(): void
{
User::observe(UserObserver::class);
}
注意:当通过 Eloquent 发出批量更新或删除查询时,不会为受影响的模型调度删除和删除模型事件。