我正在Laravel中创建一个“收藏夹”表,该收藏夹项可以是另一个用户,一个用户组或一个报表。该列表将来可能会增加,使用户可以收藏更多东西。
这是我使用偏头痛数据库的地方:
Schema::create('favorites'. function (Blueprint $table) {
$types = ['user', 'user_group', 'report'];
$table->increments('id');
$table->foreign->('user_id')->references('id')->on('users');
$table->enum('item_type', $types);
$table->foreign->('item_id')->references('id')->on($types)
这项工作正常吗?如果没有,如何编码不同类型的收藏夹?谢谢!
答案 0 :(得分:0)
您可以参考一些答案here,以了解是否应在情况下使用枚举。
如果我是你,我可能会创建3个布尔值来检查类型:
$table->boolean('is_user')->default(0);
$table->boolean('is_user_group')->default(0);
$table->boolean('is_report')->default(0);
或者只使用普通字符串:
$table->string('item_type');
对于输入验证,我将在控制器中进行操作,以避免enum
引起的任何不必要的错误。