Php 完整性约束冲突firstOrCreate()
尝试对模型(ProductItem)调用两次firstOrCreate()后,我遇到以下错误,该模型表示具有主键和唯一键的架构: 带有消息“SQLSTATE[23000]”的Illumb\Database\QueryException: 完整性约束冲突:密钥的1062个重复条目“1000” “product\u items\u item\u ref\u id\u unique”(SQL:插入到Php 完整性约束冲突firstOrCreate(),php,mysql,laravel,eloquent,laravel-migrations,Php,Mysql,Laravel,Eloquent,Laravel Migrations,尝试对模型(ProductItem)调用两次firstOrCreate()后,我遇到以下错误,该模型表示具有主键和唯一键的架构: 带有消息“SQLSTATE[23000]”的Illumb\Database\QueryException: 完整性约束冲突:密钥的1062个重复条目“1000” “product\u items\u item\u ref\u id\u unique”(SQL:插入到product\u items (项目参考号,名称,更新,创建)值(1000, “项目1”,2017-0
product\u items
(项目参考号
,名称
,更新
,创建
)值(1000,
“项目1”,2017-05-03 19:20:262017-05-03 19:20:26)
(插入)并返回一个新的我相信您有语法问题。以下描述了语法:
$flight = App\Flight::firstOrCreate(
['name' => 'Flight 10'], ['delayed' => 1]
);
请注意,字段位于不同的数组中,而不是同一数组中的两个元素。试试看。因此,对你来说,这将是:
$product_item = App\ProductItem::firstOrCreate(['item_ref_id'=>1000], ['name'=>'Item 1')] );
如果从“item\u ref\u id”中删除唯一约束,会发生什么情况?
first或create
关闭id
字段。如果希望item\u ref\u id
作为主键,请使用指定的值将其定义为primary并删除increments列。如果希望item\u ref\u id
作为自动递增列,请更改递增id,并确保在模型中设置primaryKey。@aynber我希望item\u ref\u id
为唯一键,而不是主键,id
为主键。出于好奇,如果删除'name'=>'Item1'
并只保留ref id作为搜索参数,会发生什么情况?可能您的语法也应该有效,因为我注意到文档在updateOrCreate()示例中使用了它。在这种情况下,问题就不同了。
$flight = App\Flight::firstOrCreate(
['name' => 'Flight 10'], ['delayed' => 1]
);
$product_item = App\ProductItem::firstOrCreate(['item_ref_id'=>1000], ['name'=>'Item 1')] );