Механизм наполнения БД
начальной информацией при помощи
специальных классов, которые находятся
по адресу: database\seeds
По умолчанию доступен один
класс — DatabaseSeeder. Но через консоль можно
создать свои пользовательские классы.
Создадим через консоль
пользовательский класс посева данных.
Команда: php artisan make:seeder
ArticlesSeeder
Идем в database\seeds\ArticlesSeeder.php
<?php
use Illuminate\Database\Seeder;
class ArticlesSeeder extends Seeder
{
public function run()
{
//
}
}
use Illuminate\Database\Seeder;
class ArticlesSeeder extends Seeder
{
public function run()
{
//
}
}
Метод run выполняется,
когда мы запускаем механизм посева
данных.
Опишем
способы добавления данных в таблицу.
Также создадим модель через
консоль: php artisan make:model
Article
Модель именуется в единственном
числе! Наша модель app\Article.php
Файл database\seeds\ArticlesSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Seeder;
use App\Article; // Предоставим
доступ к нашем модели, если мы ее
используем.
class ArticlesSeeder extends Seeder
{
public function run()
{
// Вставка информации в БД. Способ 1. Формируем запрос вручную.
// Мы подготавливаем запрос. Вместо ? будут вставлены данные.
DB::insert('INSERT INTO `articles` (`name`, `text`, `img`) VALUES (?, ?, ?)',
[
'Blog post',
'Text of the blog post. Here comes text about post. 1.',
'pic1.jpg'
]);
// Вставка информации в БД. Способ 2.
// Мы не формируем вручную sql-запрос.
DB::table('articles')->insert(
[
[
'name'=>"Sample blog post 2",
'text'=> "2. Text of the Sample blog post. Here comes text about post.",
'img'=> "pic2.jpg"
],
[
'name'=>"Sample blog post 3",
'text'=> "3.Text of the Sample blog post. Here comes text about post.",
'img'=> "pic3.jpg"
]
]
);
// Вставка информации в БД. Способ 3.
// С использованием моделей. Предварительно создаем модель.
// Это самый простой способ.
Article::create([
'name'=>"Sample blog post 4",
'text'=> "4.Text of the Sample blog post. Here comes text about post.",
'img'=> "pic4.jpg"
]);
}
}
class ArticlesSeeder extends Seeder
{
public function run()
{
// Вставка информации в БД. Способ 1. Формируем запрос вручную.
// Мы подготавливаем запрос. Вместо ? будут вставлены данные.
DB::insert('INSERT INTO `articles` (`name`, `text`, `img`) VALUES (?, ?, ?)',
[
'Blog post',
'Text of the blog post. Here comes text about post. 1.',
'pic1.jpg'
]);
// Вставка информации в БД. Способ 2.
// Мы не формируем вручную sql-запрос.
DB::table('articles')->insert(
[
[
'name'=>"Sample blog post 2",
'text'=> "2. Text of the Sample blog post. Here comes text about post.",
'img'=> "pic2.jpg"
],
[
'name'=>"Sample blog post 3",
'text'=> "3.Text of the Sample blog post. Here comes text about post.",
'img'=> "pic3.jpg"
]
]
);
// Вставка информации в БД. Способ 3.
// С использованием моделей. Предварительно создаем модель.
// Это самый простой способ.
Article::create([
'name'=>"Sample blog post 4",
'text'=> "4.Text of the Sample blog post. Here comes text about post.",
'img'=> "pic4.jpg"
]);
}
}
Теперь
запустим механизм посева данных.
php artisan db:seed - эта команда
запустит класс по умолчанию DatabaseSeeder
Чтобы запустить пользовательский
класс нужно написать в консоле: php artisan
db:seed —class=UsersTableSeeder
Но в файле DatabaseSeeder.php
мы можем загрузить функционал нашего
пользовательского класса. Для
этого напишем:
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(ArticlesSeeder::class);
}
}
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(ArticlesSeeder::class);
}
}
Теперь
в консоли мы можем использовать команду:
php
artisan db:seed
Команда
запускает стандартный класс посева
данных, а он запускает пользовательский
класс.
После этого данные будут
добавлены в БД. Модель автоматически
заполнит информацию о дате создания и
обновления информации.
php
artisan migrate:refresh --seed
Эта команда обозначает, что
структура ЮД будет обновлена. Будет
выполнен сброс всех миграций, которые
были применены до этого. Таблицы будут
удалены и потом заново созданы. И потом
будет выполнен посев данных.
Комментариев нет:
Отправить комментарий