Laravel - 数据填充

数据填充-start

  • 生成填充器:
    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(运行填充器)

数据填充-end

本作品采用《CC 协议》,转载必须注明作者和本文链接
老郭博客:laughing: 个人博客地址:www.phpsix.com
PHPSIX
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

兄弟你搞死我了,你运行那条命令拼错了。。。

  • php atrisan db:seed
  • php artisan db:seed
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!