Вступление
Laravel включает в себя простой метод заполнения вашей базы данных тестовыми данными с использованием начальных классов. Все начальные классы хранятся в каталоге. Классы семян могут иметь любое имя, которое вы пожелаете, но, вероятно, должны следовать некоторым разумным соглашениям, таким как и т. Д. По умолчанию класс определен для вас. Из этого класса вы можете использовать метод для запуска других начальных классов, что позволяет вам контролировать порядок заполнения.database/seeds
UsersTableSeeder
DatabaseSeeder
call
Письменные сеялки
Чтобы создать сеялку, выполните команду Artisan . Все генерируемые фреймворком сеялки будут помещены в каталог:make:seeder
database/seeds
php artisan make:seeder UsersTableSeeder
Класс сеялки содержит только один метод по умолчанию: run
. Этот метод вызывается при выполнении команды Artisan . В рамках этого метода вы можете вставить данные в свою базу данных по своему усмотрению. Вы можете использовать построитель запросов для ручной вставки данных или использовать фабрики моделей Eloquent .db:seed
run
Массовая защита назначений автоматически отключается при заполнении базы данных.
В качестве примера давайте изменим DatabaseSeeder
класс по умолчанию и добавим оператор вставки базы данных в run
метод:
<?php
use Illuminate\Support\Str;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@gmail.com',
'password' => bcrypt('secret'),
]);
}
}
Вы можете напечатать любые зависимости, которые вам нужны, в
run
сигнатуре метода. Они будут автоматически разрешены через сервисный контейнер Laravel .
Использование модельных фабрик
Конечно, ручное указание атрибутов для каждого семени модели является обременительным. Вместо этого вы можете использовать фабрики моделей для удобного создания большого количества записей базы данных. Сначала просмотрите документацию фабрики моделей, чтобы узнать, как определить ваши фабрики. После того как вы определили свои фабрики, вы можете использовать factory
вспомогательную функцию для вставки записей в вашу базу данных.
Например, давайте создадим 50 пользователей и прикрепим отношения к каждому пользователю:
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\User::class, 50)->create()->each(function ($user) {
$user->posts()->save(factory(App\Post::class)->make());
});
}
Вызов дополнительных сеялок
Внутри DatabaseSeeder
класса вы можете использовать call
метод для выполнения дополнительных начальных классов. Использование этого call
метода позволяет разбить начальное содержимое базы данных на несколько файлов, чтобы ни один класс сеялок не становился слишком большим. Передайте имя класса сеялки, который вы хотите запустить:
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call([
UsersTableSeeder::class,
PostsTableSeeder::class,
CommentsTableSeeder::class,
]);
}
Бегущие сеялки
После того, как вы написали сеялку, вам может потребоваться заново создать автозагрузчик Composer с помощью команды:dump-autoload
composer dump-autoload
Теперь вы можете использовать команду Artisan для заполнения вашей базы данных. По умолчанию команда запускает класс, который может использоваться для вызова других начальных классов. Однако вы можете использовать эту опцию, чтобы указать конкретный класс сеялки для индивидуального запуска:db:seed
db:seed
DatabaseSeeder
--class
php artisan db:seed
php artisan db:seed --class=UsersTableSeeder
Вы также можете заполнить свою базу данных с помощью команды, которая также откатит и перезапустит все ваши миграции. Эта команда полезна для полной перестройки вашей базы данных:migrate:refresh
php artisan migrate:refresh --seed
0 комментариев