尝试在模型( ProductItem )上调用 firstOrCreate()两次后出现以下错误,表示具有主键和唯一键的模式:
Illuminate \ Database \ QueryException,消息为'SQLSTATE [23000]: 完整性约束违规:1062密钥的重复条目“1000” 'product_items_item_ref_id_unique'(SQL:插入
product_items
(item_ref_id
,name
,updated_at
,created_at
)值(1000, 'Item 1',2017-05-03 19:20:26,2017-05-03 19:20:26))'
迁移如下:
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')] );
我已经阅读了以下帖子,其中没有一个帮助
答案 0 :(得分:0)
我相信你有语法问题。 documentation将语法描述如下:
$flight = App\Flight::firstOrCreate(
['name' => 'Flight 10'], ['delayed' => 1]
);
请注意,字段位于不同的数组中,而不是同一数组中的两个元素。试一试。所以对你而言:
$product_item = App\ProductItem::firstOrCreate(['item_ref_id'=>1000], ['name'=>'Item 1')] );