Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 每次创建时都会有不同的增量_Mysql_Laravel_Auto Increment - Fatal编程技术网

Mysql 每次创建时都会有不同的增量

Mysql 每次创建时都会有不同的增量,mysql,laravel,auto-increment,Mysql,Laravel,Auto Increment,我有这张桌子。我想用不同的id创建项目,但它必须在同一个表中,所以我创建了两个不同的id类型 |--------------------------------------| |id | idtype1 | idtype2 | Project_name | |--------------------------------------| 如果我用idtype1创建一个项目,idtype1会增加,但idtype2仍然会增加 |-----------------------------------

我有这张桌子。我想用不同的id创建项目,但它必须在同一个表中,所以我创建了两个不同的id类型

|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
如果我用idtype1创建一个项目,idtype1会增加,但idtype2仍然会增加

|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
| 1 |    1    |    0    |     name1    |
| 2 |    2    |    0    |     name2    |
|--------------------------------------|
但是如果我用idtype2创建一个项目,它会做相反的事情

|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
| 1 |    1    |    0    |     name1    |
| 2 |    2    |    0    |     name2    |
| 3 |    0    |    1    |     name3    |
| 4 |    0    |    2    |     name4    |
|--------------------------------------|

这可能吗?那怎么做呢?

听起来您想要三列:id、idtype1和idtype2都自动递增?如果是这样,您可以在迁移中使用$table->increments('idtype1')定义它;如上所述。但是,值得注意的是,所有三列都将始终具有彼此相同的值,因此您可能需要重新思考为什么需要所有三列

idtype1和idtype2非常模糊,没有任何含义。这些代表什么?如果你能以他们的名义表达他们所代表的东西,事情就会有所改善

这些ID是其他表中相关记录的ID吗?如果是这样,您应该使用其他表名来命名它们,例如type_id或address_id


然后,您还可以研究设置外键信息,以便数据库了解这种关系,并帮助您增强完整性。

此处不能执行自动递增,因为有时idType1需要递增,而IDType2不需要递增。因此,在迁移过程中,您需要:

$table->Integer('idType1');
$table->Integer('idType2');
注册新项目时,根据需要在关联列中计算+1

编辑#1


希望有帮助。

我不知道你在说什么。看看我是否解释了我使用idtype的原因,因为它使问题变得更加混乱。另外,如果我把自动增量,它将增加价值,每次我创建,但相反,我只希望他们在特定的时间只增加。idtype只是一个替换名称,所以这个问题有意义。我在我的实际表中没有使用idtype。“如果我解释我使用idtype的原因,它会使问题更加混乱。”这表明您的解决方案使事情变得比需要的更复杂。我认为这个问题是一个x/y问题。您正试图以特定的方式解决一个复杂的问题,并在解决方案的某个方面寻求帮助。相反,重新思考这个问题,寻找更好的解决方案。具体到这个问题,如果您只希望这些字段在某些情况下递增,那么您需要编写代码来做出决定,并在每次insert语句中手动设置值。“您需要编写代码来做出决定,并在每次insert语句中手动设置值”这就是我在这里的原因
if (project_type == 1) {
       DB::table('projects_controller')->increment('idType1');
} elseif (project_type == 2) {
       DB::table('projects_controller')->increment('idType2');
} etc etc