首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDOException::("SQLSTATE[23000]:完整性约束冲突: 1062关键字'Laptop1‘的重复条目'products_name_unique'")

PDOException::("SQLSTATE[23000]:完整性约束冲突: 1062关键字'Laptop1‘的重复条目'products_name_unique'")
EN

Stack Overflow用户
提问于 2018-08-11 22:43:42
回答 2查看 1.2K关注 0票数 2

这是我的ProductsTableSeeder,我将产品创建到products表中,并创建与目录的关系,创建category_product表,并添加外键。

当我迁移和播种它说重复的数据时,我有一个错误。我该如何修复它?

代码语言:javascript
复制
use App\Product;
use Illuminate\Database\Seeder;

class ProductsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //

        //Product::truncate();

        for($i = 1; $i <= 10; $i++){
            Product::updateOrCreate([
                'name'=> 'Laptop'.$i,
                'slug' => 'laptop'.$i,
                'details' => [13,14,15][array_rand([13,14,15])].'inch,'.[1,2,3][array_rand([1,2,3])].'TB SSD,32GB RAM',
                'price' => rand(1500,3000),
                'description' => 'Lorem'.$i.' ipsum dolor sit amet, consectetur adipiscing elit. Maecenas fermentum. laoreet turpis, nec sollicitudin dolor cursus at. Maecenas aliquet, dolor a faucibus efficitur, nisi tellus cursus urna, eget dictum lacus turpis.',
                ])->categories()->attach(1);
        }
        $product = Product::find(1)-> categories()->attach(2); 
}

这是产品表。

代码语言:javascript
复制
  public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name')->unique();
            $table->string('slug')->unique();
            $table->string('details')->nullable();
            $table->float('price');
            $table->text('description');
            //$table->integer('category_id');
            $table->timestamps();
        });
    }

这是类别表。

代码语言:javascript
复制
public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name')->unique();
            $table->string('slug')->unique();
            $table->timestamps();
        });
    }

这是关系表。

代码语言:javascript
复制
public function up()
    {
        Schema::create('category_product', function (Blueprint $table) {
            $table->increments('id');

            $table->integer('product_id')->unsigned()->nullable();
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');

            $table->integer('category_id')->unsigned()->nullable();
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');

            $table->timestamps();
        });
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-15 02:37:44

出现这个错误是因为数据库不是空的,并且您没有将属性传递给updateOrCreate()函数。因此,Laravel正在尝试创建一个新的。Check the API

如果您只需将updateOrCreate()函数调整为:

代码语言:javascript
复制
Product::updateOrCreate(['id' => $i], [
            'name'=> 'Laptop'.$i,
            'slug' => 'laptop'.$i,
            'details' => [13,14,15][array_rand([13,14,15])].'inch,'.[1,2,3][array_rand([1,2,3])].'TB SSD,32GB RAM',
            'price' => rand(1500,3000),
            'description' => 'Lorem'.$i.' ipsum dolor sit amet, consectetur adipiscing elit. Maecenas fermentum. laoreet turpis, nec sollicitudin dolor cursus at. Maecenas aliquet, dolor a faucibus efficitur, nisi tellus cursus urna, eget dictum lacus turpis.',
])->categories()->attach(1);
票数 2
EN

Stack Overflow用户

发布于 2018-08-12 00:25:03

尝试删除现有表,然后运行migrate。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51800769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档