#6 Laravel 5: Seeds - тестовые записи

Основы Laravel 5

Всё для работы с базой у нас есть. И для того чтобы начинать наши первые выборки нам нужны тестовые записи в таблице. Для автоматизации этого процесса в Laravel есть функционал именуемый как Seeds.

Исполняемый файл находится в database/seeds/DatabaseSeeder.php

Открываем этот файл в phpStorm и ниже класса и добавляем новый класс -

class PostsSeeder extends Seeder {

    public function run()
    {
        DB::table('Posts')->delete();
        Post::create([
            'title' => 'First Post',
            'slug' => 'first-post',
            'excerpt' => 'First Post body',
            'content' => 'Content First Post body',
            'published' => true,
            //'published_at' => DB::raw('NOW()'), // для DateTime
            'published_at' => DB::raw('CURRENT_TIMESTAMP'), // для timestamp
        ]);

        Post::create([
            'title' => 'Second Post',
            'slug' => 'second-post',
            'excerpt' => 'Second Post body',
            'content' => 'Content Second Post body',
            'published' => false,
            'published_at' => DB::raw('CURRENT_TIMESTAMP'),
        ]);

        Post::create([
            'title' => 'Third Post',
            'slug' => 'third-post',
            'excerpt' => 'Third Post body',
            'content' => 'Content Third Post body',
            'published' => false,
            'published_at' => DB::raw('CURRENT_TIMESTAMP'),
        ]);
    }
}

С помощью класса PostsSeeder мы сначала очищаем таблицу Posts и затем добавляем три тестовых статьи.
Чтобы наш новый класс отработал, надо записать это в главный класс Сидов -

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

   // $this->call('UserTableSeeder');
       $this->call('PostsSeeder');
}

Для того чтобы мы могли успешно обращаться к модели Post, надо прописать ее в секции use.

Но сначала давайте перенесем наши модели в папку app/Models/
Создаем папку и переносим туда файлы User.php и Post.php

Открываем файл Post.php и меняем ему namespase на

namespace App\Models;

Модель User пока трогать не будем - всему свое время. Как дойдем до работы с пользователями - получим ошибку - тогда и исправим.

Теперь в файле DatabaseSeeder.php укажем модель Post -

use App\Models\Post;

Теперь у нас всё готово для запуска Seeds. В phpStorm открываем терминал и выполняем команду -

php artisan db:seed

Если все правильно прописали - то все пройдет без ошибок. Проверяем наличие записей в таблице posts.

Добавить отзыв (пожелание, комментарий)

Игорь, Новосибирск
Здравствуйте. php artisan db:seed [InvalidArgumentException] A four digit year could not be found Data missing В каком месте должны быть найдены четыре цифры года? В базе: created_at timestamp 0000-00-00 00:00:00
Виталя, Чита
Очищать в данном случае лучше не через delete а через truncate