What is database seeding in Laravel?

后端 未结 2 1916
误落风尘
误落风尘 2021-01-02 12:01

I use Laravel framework and I have recently been informed that there is something named database seeding which produces a fake dataset for our tests. Is my unde

2条回答
  •  心在旅途
    2021-01-02 12:22

    Yes, Laravel comes with the very great & popular package named - Faker. You can write this example, using Faker and generate 10 users like this (inside DatabaseSeeder.php):

    use DB;
    use Illuminate\Database\Seeder;
    use Illuminate\Database\Eloquent\Model;
    
    use Faker\Factory as Faker;
    
    class DatabaseSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
            $faker = Faker::create();
            foreach (range(1,10) as $index) {
                DB::table('users')->insert([
                    'name' => $faker->name,
                    'email' => $faker->email,
                    'password' => bcrypt('secret'),
                ]);
            }
        }
    }
    

    That’s it – $faker->name will generate a random person name, and $faker->email – a random email. After running command php artisan db:seed your database get populated with some random entries.

    You can find this package inside your composer.json file under require-dev:

    "require-dev": {
        "fzaninotto/faker": "^1.6", // <------- here
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~5.0",
        "symfony/css-selector": "3.1.*",
        "symfony/dom-crawler": "3.1.*",
        "laracasts/testdummy": "~2.0"
    },
    

    Faker can generate lots of data, from which some are given below:

    $faker->randomDigit;
    $faker->numberBetween(1,100);
    $faker->word;
    $faker->paragraph;
    $faker->lastName;
    $faker->city;
    $faker->year;
    $faker->domainName;
    $faker->creditCardNumber;
    

    Hope this helps!

提交回复
热议问题