gpt4 book ai didi

php - 违反完整性约束 firstOrCreate()

转载 作者:行者123 更新时间:2023-11-28 23:16:15 26 4
gpt4 key购买 nike

尝试在模型 (ProductItem) 上调用 firstOrCreate() 两次后出现以下错误,表示具有主键和唯一键的模式:

Illuminate\Database\QueryException with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1000' for key 'product_items_item_ref_id_unique' (SQL: insert into product_items (item_ref_id, name, updated_at, created_at) values (1000, 'Item 1', 2017-05-03 19:20:26, 2017-05-03 19:20:26))'

  1. 第一次运行时,我希望firstOrCreate() 会尝试获取一个项目,否则如果它不存在,它会创建(插入)并返回一个新的。 <- 插入成功
  2. 如果我第二次运行它,我认为它应该返回现有的。 <- 这是错误发生的地方

迁移如下:

class CreateProductItemTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_items', function (Blueprint $table) {
$table->increments('id');
$table->integer('item_ref_id')->unique();
$table->string('name');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('product_items');
}
}

用于创建项目的代码:

$product_item = App\ProductItem::firstOrCreate(['item_ref_id'=>1000,'name'=>'Item 1')] );

我浏览了以下帖子,但都没有帮助

  1. laravel first0rNew Integrity Constraint Violation
  2. Laravel 5 Integrity constraint violation
  3. Laravel - Integrity constraint violation: 1062 Duplicate entry

最佳答案

我相信你有语法问题。 documentation语法描述如下:

$flight = App\Flight::firstOrCreate(
['name' => 'Flight 10'], ['delayed' => 1]
);

请注意,字段位于不同的数组中,而不是同一数组中的两个元素。试一试。所以对你来说是:

$product_item = App\ProductItem::firstOrCreate(['item_ref_id'=>1000], ['name'=>'Item 1')] );

关于php - 违反完整性约束 firstOrCreate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43767455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com