Laravel 没有 id 的批量赋值(自动增量)

Laravel Mass Assignment without id( autoincrement)

想知道是否可以通过将 Autoincrement id 保持为空来在 Laravel 中插入或更新。 这是我的 table 迁移

 $table->id(); // Autoincrement
 $table->string("description");
 $table->string("part_number");
 $table->string("serial_number");
 $table->smallInteger("qty");

这是我要插入的数据。当我尝试使用 $data1 进行更新插入时,出现错误。还没有尝试 $data2 但这是另一种可能性。

1366 Incorrect integer value: '' for column 'id' at row 1

$data1= [
            [
              id=>"",
              description=>"xyz",
              part_number=>"xyz",
              serial_number=>"xyz",
              qty=>1
            ],
            [
              id=>"",
              description=>"xyz1",
              part_number=>"xyz1",
              serial_number=>"xyz1",
              qty=>1
            ],
            [
              id=>"",
              description=>"xyz2",
              part_number=>"xyz2",
              serial_number=>"xyz2",
              qty=>1
            ],
           
        ];

 
 $data2=[
            [
              id=>1,
              description=>"xyz",
              part_number=>"xyz",
              serial_number=>"xyz",
              qty=>1
            ],
            [
              id=>2,
              description=>"xyz1",
              part_number=>"xyz1",
              serial_number=>"xyz1",
              qty=>1
            ],
            [
              id=>"",
              description=>"xyz2",
              part_number=>"xyz2",
              serial_number=>"xyz2",
              qty=>1
            ],
           
        ]

找到解决办法。如果其他人遇到同样的问题或想要类似的结果,可能会有所帮助。

Laravel终于没有让人失望。它允许空白自动递增字段并自行递增(我认为本机 DB 函数,在我的例子中是 MySQl)。 只需在 config/database.php

中设置 'strict' => false

您无需在 data1 数组中提及 id。 Laravel 会自动处理。正如您提到的 id as " ",Laravel 正试图像那样存储它并且 id 是无符号整数列,因此您收到错误消息“1366 Incorrect integer value: '' for column 'id' at row 1 “

试试下面的数据数组,它应该可以工作:

$data1 = [
            [
              description=>"xyz",
              part_number=>"xyz",
              serial_number=>"xyz",
              qty=>1
            ],
            [
              description=>"xyz1",
              part_number=>"xyz1",
              serial_number=>"xyz1",
              qty=>1
            ],
            [
              description=>"xyz2",
              part_number=>"xyz2",
              serial_number=>"xyz2",
              qty=>1
            ],           
        ];