Laravel - 資料填充

PHPSIX發表於2017-11-13
  • 生成填充器:
    php artisan make:seeder UsersTableSeeder

  • 具體思路:這裡我們使用的是模型工廠來填充資料,首先需要在ModelFactory.php中新增欄位,然後再從 UsersTableSeeder.php中來規定要建立的規則。

  • database/factories/ModelFactory.php中新填充一個欄位(username):

    <?php
    /*
    |--------------------------------------------------------------------------
    | Model Factories
    |--------------------------------------------------------------------------
    |
    | Here you may define all of your model factories. Model factories give
    | you a convenient way to create models for testing and seeding your
    | database. Just tell the factory how a default model should look.
    |
    */
    $factory->define(App\User::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'username' => $faker->firstName,
        'email' => $faker->safeEmail,
        'password' => bcrypt(str_random(10)),
        'remember_token' => str_random(10),
    ];
    });
  • database/seeds/UsersTableSeeder.php中書寫要填充的資料和規則:

    <?php
    use Illuminate\Database\Seeder;
    class UsersTableSeeder extends Seeder
    {
            public function run()
            {
            //生成一條資料,陣列中為要生成的資訊
                    $admin = factory('App\User')->create([
                            'name' => 'gdc',
                            'email' => 'phpsix@126.com',
                            'password' => bcrypt('123456')
                    ]);
                    //生成三條資料,密碼為123456,其他隨機
                    $users = factory('App\User',3)->create([
                            'password' => bcrypt('123456')
                    ]);
            }
    }
  • database/factories/DatabaseSeeder.php類中,你可以使用call方法執行額外的填充類。使用call方法允許你將資料庫填充分解成多個檔案,這樣單個填充器類就不會變得無比巨大,只需簡單將你想要執行的填充器類名傳遞過去即可。
        <?php
        use Illuminate\Database\Seeder;
        class DatabaseSeeder extends Seeder
        {
                public function run()
                {
                     $this->call(UsersTableSeeder::class);
                }
        }
  • 執行填充器:php atrisan db:seed(執行填充器)

老郭部落格:laughing:
個人部落格地址:https://www.phpsix.com

相關文章