首页 > 解决方案 > 为什么 php artisan migrate fresh --seed 不能正常工作

问题描述

嗨开发人员我有关于php artisan migrate:refresh --seed VS php artisan db:seed的问题我只是想问,因为我在 php artisan migrate:refresh --seed 上有问题,但是当我使用 php artisan db::种子它可以正常工作

现在我在播种机上创建的数据没有播种到表中。不知道为什么问题出在哪里

播种:VehicleModelsSeeder

播种:VehicleModelsSeeder(0 秒)

这是我的车型播种机课

    <?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use App\Vehicle;
use App\VehicleModel;

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

        $vehicles = Vehicle::all();
        foreach($vehicles as $vehicles_data) {
            VehicleModel::forceCreate([
                'name' => Str::random(5),
                'vehicle_id' => $vehicles_data->id
            ]);

        }
        

    }
}

标签: laravel

解决方案


默认情况下,该db:seed命令运行Database\Seeders\DatabaseSeeder该类。

有两种解决方案:

1. 您需要在默认播种机的运行方法中调用您的附加播种机。

database/seeders/DatabaseSeeder.php

public function run()
    {
        $this->call([
            VehicleModelsSeeder::class
        ]);
    }

然后:

php artisan migrate:refresh --seed

2. 您可以使用 flag 指定要运行的播种机--class,但在这种情况下,您需要分别运行refreshmigrate命令:

php artisan migrate:refresh
php artisan db:seed --class:VehicleModelsSeeder

更多信息:Laravel 数据库播种文档


推荐阅读