Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Php 完整性约束冲突firstOrCreate()_Php_Mysql_Laravel_Eloquent_Laravel Migrations - Fatal编程技术网

Php 完整性约束冲突firstOrCreate()

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

尝试对模型(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-05-03 19:20:262017-05-03 19:20:26)

  • 第一次运行时,我希望firstOrCreate()会尝试 获取项,否则,如果该项不存在,它将创建
    (插入)并返回一个新的我相信您有语法问题。以下描述了语法:

    $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')] );