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

时间:2016-08-27 11:57:21

标签: laravel laravel-5 laravel-migrations laravel-seeding

我有一些必须在表格中的数据,以便我的应用程序正常工作,否则我会收到错误消息。

例如,如果你或其他任何人从github拉我的应用程序,如果你运行php artisan migrate然后尝试测试应用程序你会收到一个错误: 数据不存在或类似的东西。 它是因为表格中没有数据。

理想的解决方案是跑完后:

 php artisan migrate

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

这应该以播种机的某种方式完成,但我不知道如何。任何人都可以帮忙并举个例子吗?

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

id car_company

1 Volkswagen

2梅赛德斯

3奥迪

4保时捷

有4行,我想在运行

后插入它们
 php artisan db:seed

3 个答案:

答案 0 :(得分:6)

首先运行以下命令:

php artisan make:seeder CarCompanyTableSeeder 。这将在数据库\种子中创建类 CarCompanyTableSeeder

enter image description here

在功能公共功能运行()内,请添加以下代码:

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);
    }

数据库\种子中有另一个类类DatabaseSeeder扩展Seeder 。在课堂内有一个函数 run()。在那里添加以下代码:

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

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

        Model::reguard();
    }

现在,当您运行 php artisan db:seed 时,您的所需值将会插入其中。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

目前,在这种情况下,我使用数据库迁移。您不需要在迁移中仅创建数据库结构,但您也可以在迁移中将数据添加到数据库,因此应该运行php artisan migrate来创建数据库结构并在数据库中创建所需的数据。 / p>