Laravel 5.2数据库--填充数据
1、简介
Laravel 包含了一个简单方法来填充数据库——使用填充类和测试数据。所有的填充类都位于database/seeds目录。填充类的类名完全由你自定义,但最好还是遵循一定的规则,比如可读性,例如UserTableSeeder等等。安装完 Laravel 后,会默认提供一个DatabaseSeeder类。从这个类中,你可以使用call方法来运行其他填充类,从而允许你控制填充顺序。
2、编写填充器
要生成一个填充器,可以通过 Artisan 命令make:seeder。所有框架生成的填充器都位于database/seeders目录:
php artisan make:seeder UserTableSeeder一个填充器类默认只包含一个方法:run。当Artisan命令db:seed运行时该方法被调用。在run方法中,可以插入任何你想插入数据库的数据,你可以使用查询构建器手动插入数据,也可以使用 Eloquent 模型工厂。
举个例子,让我们修改 Laravel 安装时自带的DatabaseSeeder类,添加一个数据库插入语句到run方法:
<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder{ /** * 运行数据库填充 * * @return void */ public function run() { DB::table('users')->insert([ 'name' => str_random(10), 'email' => str_random(10).'@gmail.com', 'password' => bcrypt('secret'), ]); } }
如果是多个表的话,可以添加多个表
<?php use Illuminate\Database\Seeder; use App\Models\User; class UserTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table(User::getModel()->getTable())->delete(); User::create([ 'id' => 1, 'name' => '生活用品', ]); User::create([ 'id' => 2, 'name' => '出差用具', ]); } }
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UserTableSeeder::class);
    }
} 
3、运行填充器
编写好填充器类之后,可以使用 Artisan 命令db:seed来填充数据库。
默认情况下,db:seed命令运行可以用来运行其它填充器类的DatabaseSeeder类,
但是,也可以使用--class 选项来指定你想要运行的独立的填充器类:
php artisan db:seed
php artisan db:seed --class=UserTableSeeder 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号