Laravel 5 - Как автоматически заполнять таблицу после развертывания приложения?

У меня есть определенные данные, которые должны быть в таблице, чтобы мое приложение работало, в противном случае я получаю сообщение об ошибке.

Например, если вы или кто-то другой вытащил мое приложение из github, и если вы запустите php artisan migrate, а затем попытаетесь протестировать приложение, вы получите сообщение об ошибке: данные не существуют или что-то в этом роде. и это потому, что в таблице нет данных.

Таким образом, идеальное решение будет после запуска:

 php artisan migrate

что вы также получите эти необходимые данные в этой таблице.

Это должно быть как-то сделано с сеялкой, но я не знаю как. Может кто-нибудь помочь и привести мне пример?

Как сделать начальное число для этих данных, которое должно попасть в таблицу car_company:

id car_company

1 Фольксваген

2 мерседеса

3 Ауди

4 Порше

Есть 4 строки, и я хочу вставить их после запуска

 php artisan db:seed

3 ответа

Решение

Сначала запустите следующую команду:

php ремесленник делает: сеялка CarCompanyTableSeeder. Это создаст класс CarCompanyTableSeeder в базе данных \ seed.

Внутри функции public function run() добавьте следующие коды:

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 в базе данных \seed. Внутри класса есть функция run (). Добавьте туда следующий код:

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

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

        Model::reguard();
    }

Теперь, когда вы запустите php artisan db: seed, туда будут вставлены нужные вам значения.

На данный момент для таких ситуаций я использую миграцию базы данных. В миграциях не нужно создавать только структуру базы данных, но вы также можете добавлять данные в базу данных, чтобы их можно было запустить php artisan migrate создать структуру базы данных и создать необходимые данные в базе данных.

После запуска php artisan migrate тебе нужно бежать php artisan db:seedЧтобы записать семена в базу данных, вы можете следовать этим инструкциям: https://laravel.com/docs/5.2/seeding

Другой полезный пакет: https://github.com/fzaninotto/Faker, поможет вам подделать данные в базу данных.

Другие вопросы по тегам