пятница, 7 июля 2017 г.

LAREVEL. ПОСЕВ ДАННЫХ.

Механизм наполнения БД начальной информацией при помощи специальных классов, которые находятся по адресу: database\seeds
По умолчанию доступен один класс — DatabaseSeeder. Но через консоль можно создать свои пользовательские классы.



Создадим через консоль пользовательский класс посева данных.
Команда: php artisan make:seeder ArticlesSeeder

Идем в database\seeds\ArticlesSeeder.php

<?php

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 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"
]);

}
}


Теперь запустим механизм посева данных.
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);
}
}

Теперь в консоли мы можем использовать команду: php artisan db:seed
Команда запускает стандартный класс посева данных, а он запускает пользовательский класс.

После этого данные будут добавлены в БД. Модель автоматически заполнит информацию о дате создания и обновления информации.

php artisan migrate:refresh --seed
Эта команда обозначает, что структура ЮД будет обновлена. Будет выполнен сброс всех миграций, которые были применены до этого. Таблицы будут удалены и потом заново созданы. И потом будет выполнен посев данных.


Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html