Семя базы данных Laravel 4 не работает

Я следую этому руководству: http://fideloper.com/post/41750468389/laravel-4-uber-quick-start-with-auth-guide?utm_source=nettuts&utm_medium=article&utm_content=api&utm_campaign=guest_author

И это руководство: http://laravelbook.com/laravel-database-seeding/

Но когда я пытаюсь запустить php artisan db:seed, ничего не происходит.

Я пробую это:

<?php
    // app/database/seeds/groups.php
    return array(
        'table' => 'groups',
        array(
            'name' => 'Administrador',
            'description' => '<p>Permissão total no sistema</p>',
            'created_at' => new DateTime,   
            'updated_at' => new DateTime
        ),
        array(
            'name' => 'Moderadores',
            'description' => '<p>Podem apenas postar e moderar comentários</p>',
            'created_at' => new DateTime,   
            'updated_at' => new DateTime
        )
    );

И далее: php artisan db:seed.

php artisan db:seed --env=local
Database seeded!

Но:

mysql> select * from groups;
Empty set (0.00 sec)

person Patrick Maciel    schedule 09.02.2013    source источник


Ответы (3)


Пример в туториале неправильный, потому что между бета-версией 1 и бета-версией 2 произошли изменения в том, как работают сиды.

Измените свой файл DatabaseSeeder.php на этот - и он будет работать для учебника:

<?php

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call('UserTableSeeder');
    }

}

class UserTableSeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();
        User::create(array(
                'id' => 1,
                'username' => 'firstuser',
                'password' => Hash::make('first_password'),
                'created_at' => new DateTime,
                'updated_at' => new DateTime
        ));
        User::create(array(
                'id' => 2,
                'username' => 'seconduser',
                'password' => Hash::make('second_password'),
                'created_at' => new DateTime,
                'updated_at' => new DateTime
        ));    
    }
}

Теперь запустите php artisan db:seed - и все заработает.

person Laurence    schedule 10.02.2013
comment
Я проверю и дам ваш отзыв, подождите немного. - person Patrick Maciel; 10.02.2013
comment
Строка DB::table('users')->delete(); нежелательна - person Kevin; 09.02.2014

Если @The Shift Exchange возвращает какую-либо ошибку, например "Пользователь класса не найден", вы можете попробовать

DB::table('users')->insert(array(...)) 

вместо

User::create(array(...))
person Stelian    schedule 28.07.2013

person    schedule
comment
Есть ли способ заполнить его вне файла базы данных, например файлов миграции? Я пробовал несколько способов, но ни один из них не работает. Это работало только тогда, когда я заполнил данные внутри файла databaseseeder.php. - person lonerunner; 21.12.2014