【发布时间】:2018-06-16 03:10:31
【问题描述】:
我正在使用 Laravel 和 Migrations 来构建我的整个数据库结构。
问题描述
在架构中,我有一个pack 表,它属于user 和group,需要为这些表的每个不同组合保留一种唯一的“索引”。
这意味着:基于不同的user_id 和group_id 递增的序列号。例如:
| id | user_id | group_id | sequence |
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 1 |
| 3 | 1 | 3 | 1 |
| 4 | 1 | 1 | 2 |
| 5 | 1 | 2 | 2 |
| 6 | 1 | 3 | 2 |
| 7 | 2 | 1 | 1 |
| 8 | 2 | 2 | 1 |
| 9 | 2 | 3 | 1 |
这将用于引用视图层上的包:
用户 1,这是您的第 1 组的第 1 包。
用户 1,这是第 1 组的第 2 包。
用户 1,这是第 2 组的第 1 包。
我设计了我的迁移(up),例如:
Schema::create('pack', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('user');
$table->integer('group_id')->unsigned();
$table->foreign('group_id')->references('id')->on('group');
$table->integer('sequence')->unsigned();
});
并使用此业务逻辑在模型层填充$pack->sequence 字段。
问题 1: 从理论上讲,这应该被认为是在所描述的场景中使用的最佳策略?
问题 2:
有一些模式/方法可用于填充数据库层上的sequence 字段?
【问题讨论】:
-
那么,您想在表的序列列上创建 1,2,3... 值吗?
-
@SagarGautam 是的,基于用户和组的不同组合
-
您能描述一下应该如何分配序列号吗?
-
@SagarGautam 已经在问题中描述过了,你没有得到哪一点?
-
哦,我明白了,你在上表中添加的序列是你想要的序列吗?
标签: php mysql database laravel migration