Laravel 5 - 如何在部署应用程序后自动播种 table?

Laravel 5 - How to seed table automatically after deploying an app?

我有一些数据必须在 table 中才能使我的应用程序运行,否则我会收到一条错误消息。

例如,如果您或其他任何人从 github 中提取我的应用程序,并且如果您 运行 php artisan migrate 然后尝试测试该应用程序,您将收到错误消息: 数据不存在或类似的东西。 这是因为 table.

中没有数据

所以理想的解决方案是在 运行ning 之后:

 php artisan migrate

您还可以在 table 中获得所需的数据。

这应该用播种机以某种方式完成,但我不知道如何做。谁能帮我举个例子?

如何为应该进入 car_company 的数据制作种子 table:

id car_company

1 大众

2 辆奔驰

3辆奥迪

4 辆保时捷

有 4 行,我想在 运行ning

之后插入它们
 php artisan db:seed

运行php artisan migrate后你需要运行php artisan db:seed, 要将种子写入数据库,您可以按照以下说明操作:https://laravel.com/docs/5.2/seeding#using-model-factories

另一个有用的软件包是:https://github.com/fzaninotto/Faker,帮助您将数据伪造到数据库。

目前,对于这种情况,我使用数据库迁移。您不需要在迁移中只创建数据库结构,但您也可以在迁移中将数据添加到数据库,这样就足以 运行 php artisan migrate 创建数据库结构并在数据库中创建所需的数据.

首先运行以下命令:

php artisan make:seeder CarCompanyTableSeeder。这将在 database\seeds.

中创建 class CarCompanyTableSeeder

在函数public函数内运行()请添加以下代码:

public function run()
    {
        $data = array(
            array(
                'id'            =>    1,
                'car_company'   =>   'Volkswagen'
            ),
            array(
                'id'            =>    2,
                'car_company'   =>   'Mercedes'
            ),
            array(
                'id'            =>    3,
                'car_company'   =>   'Audi'
            ),
            array(
                'id'            =>    4,
                'car_company'   =>   'Porsche'
            )
        );

        DB::table('car_company')->insert($data);
    }

database\seeds中还有一个class class DatabaseSeeder extends Seeder。在 class 中有一个函数 运行()。在此处添加以下代码:

public function run()
    {
        Model::unguard();

        $this->call(CarCompanyTableSeeder::class);

        Model::reguard();
    }

现在,当您 运行 php artisan db:seed 时,您想要的值就会插入到那里。