laravel利用seeder实现数据表中填充数据
给大家演示一下如何快速填充数据表中的数据
首先要执行php artisan命令 会出现各种命令指示 查找到
php artisan make:seeder
根据命令指示创建相应的文件,如下所示
php artisan make:seeder TestSeeder
首先我先创建一个test表,如下所示
TestSeeder.php文件内容如下所示
<?php use Illuminate\Database\Seeder; class TestSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table('test')->insert([ 'name' => str_random(10), 'sex' => rand(1,2), // 1男 2女 'emAIl' => str_random(10).'@QQ.com', 'password' => bcrypt('123456'), // bcrypt为hash加密 ]); } }
执行如下命令进行填充假数据
php artisan db:seed --class=TestSeeder
每添加一条都要执行一边命令,这样会很麻烦,不如写一个for循环来一次新插入
for ($x=0; $x<=10; $x++) { DB::table('test')->insert([ 'name' => str_random(10), 'sex' => rand(1,2), // 1男 2女 'email' => str_random(10).'@qq.com', 'password' => bcrypt('123456'), // bcrypt为hash加密 ]); }
数据库的数据展示如下:
如需要同时添加多个表的测试数据,需要在DatabaseSeeder.php中添加:
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { public function run() { // $this->call(UsersTableSeeder::class); $this->call(CreateDepartmentsSeeder::class); $this->call(CreateUsersSeeder::class); $this->call(CreateWagesSeeder::class); } }
执行如下命令进行填充多个表的测试数据
php artisan db:seed
当我们执行 php artisan db:seed 提示 class UserTableSeeder does not exist 这个错误基本是出现在不经过composer的时候出现的,至于为什么会出现呢? 1.可能是你执行php artisan make:seeder UserTableSeeder 的时候,他没有把UserTableSeeder.php 写到自动加载里面去 2.你是复制过来的 解决方法: composer dump-autoload
官方文档地址: https://laravel.com/docs/5.5/seeding#writing-seeders
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)