【发布时间】:2021-07-10 00:48:00
【问题描述】:
我已将我的项目从 Laravel 7 降级到 8。但问题是,当我运行播种命令 php artisan db:seed 时,它会显示错误 SQLSTATE[23000]:完整性约束违规:。这是因为它播种了我之前运行的先前播种数据。 在运行播种命令之前我也做过
-
在 DatabaseSeeder.php 和其他 Seeder 文件的顶部添加 Database\Seeders 命名空间
-
将文件夹名称种子替换为位于 \database\ 文件夹的播种机
-
如下更新composer.json:
"autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" }},
-
最后,运行下面的命令
作曲家转储自动加载
php 工匠数据库:种子
我还更改了 DatabaseSeeder 命令 $this->call(DeliveryAddressTableSeeder::class);
DeliveryAddressTableSeeder
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\DeliveryAddress;
class DeliveryAddressTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
$deliveryRecords = [
['id' => 1, 'user_id' => 1, 'name' => '***', 'address' => 'Test 123', 'city' => '*******', 'country' => '******', 'pincode' => '*****', 'mobile' => '**********', 'status' => 1],
];
DeliveryAddress::insert($deliveryRecords);
}
}
【问题讨论】:
-
你能展示你的 DeliveryAddressTableSeeder 播种机吗?该表中有数据吗?
-
@Psycho 请结帐。我已经更新了问题
-
如果我对播种的理解正确,您只需要在创建表后运行一次,一旦为数据库播种,除非您刷新数据库,否则您不需要再次运行它。
-
@MuqadarAli,你不想在播种前先截断你的表吗?您的收货地址的 id 设置为 1。我猜这个 ID 在您的表中设置为增量。我认为您应该截断您的表格,或者从播种机中删除“id”字段。
-
@Muqadar 根据你的播种机,Jaswinder 的回答对你来说应该足够了
标签: php laravel laravel-blade laravel-seeding