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
],
];
想知道是否可以通过将 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
],
];