🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 为什么要使用数据填充 在开发阶段,我们常常需要使用假数据对应用进行测试. laravel 提供了factory工厂方法来生成假数据. 使用命令创建数据工厂类. ~~~ php artisan make:factory UserFactory ~~~ 上面的命令在database/factories文件夹下创建了一个工厂类. 以下,我们创建了一个文章工厂.define()方法接收两个参数,第一个参数是关联的模型,第二个参数是一个闭包. 然后对响应的字段指定合适的数据类型. ~~~ <?php use Faker\Generator as Faker; $factory->define(\App\Post::class, function(Faker $faker){ $user_ids = \App\User::pluck('id')->toArray(); return [ 'title' => $faker->sentence, 'content' => $faker->paragraph, 'user_id' => $faker->randomElement($user_ids), ]; }); ~~~ ## 通过tinker生成数据 然后通过命令进入tinker ~~~ php artisan tinker ~~~ ~~~ factory(\App\Post::class,50)->create() ~~~ 就可以生成50条假数据了 ## 通过seeder生成数据 在命令行输入 ~~~ php artisan make:seeder PostTableSeeder ~~~ 该命令会在database/sedds文件夹下创建PostTableSeeder类 ~~~ <?php use Illuminate\Database\Seeder; class PostTableSeeder extends Seeder { public function run() { factory(\App\Post::class)->times(50)->create(); //times()方法指定生成的数据条数,create()方法用来创建数据. } } ~~~ 然后在database/seeds/文件夹的DatabaseSeeder类的run()方法中调用$this->call()方法 ~~~ <?php use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { public function run() { Model::unguard(); $this->call(PostTableSeeder::class); Model::unguard(); } } ~~~ 完成以上操作后在命令行运行即可生成假数据. ~~~ php artisan db:seed ~~~