我在Laravel中设计了一个新的应用程序,其用户部分有三种类型的用户(学生,代理,赞助商),每个用户都有不同的属性。我有两个选择:
1-通过创建这样的用户来创建一对一的多态关系:
$table->uuid('id');
$table->primary('id');
$table->string('email')->unique();
$table->string('password');
$table->uuid('userable_id'); //polymorphic
$table->string('userable_type'); //polymorphic
2-将user_id属性添加到每个表(学生,代理,赞助商)并将其引用到用户表中,如下所示:
$table->uuid('id');
$table->primary('id');
$table->uuid('user_id'); //FK to user table
我的问题是哪一个是最佳选择?每个人的利弊是什么? 谢谢。
答案 0 :(得分:0)
我更喜欢使用数字1。
我已经使用方法2开发了一个Laravel应用程序。此方法的问题是您需要为User Model
(hasOne)上的每种类型的用户设置三个单独的关系。然后,无论何时需要关系,您都必须先检查用户,然后调用相关方法(例如,如果您需要学生,则需要检查用户是否为学生,然后加载关系)。
在方法1中,您只需在User Model
上设置一个关系。然后,只要您需要加载相关模型,您只需要调用一个方法。
希望这可以帮助您做出决定。