技术控

    今日:61| 主题:49471
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] [ Laravel 5.3 文档 ] 数据库 —— 填充数据

[复制链接]
离心DIEOUT 发表于 2016-10-4 19:51:12
79 0

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
    1、简介  

  Laravel使用填充类和测试数据提供了一个简单方法来填充数据到数据库。所有的填充类都位于    database/seeds目录。填充类的类名完全由你自定义,但最好还是遵循一定的规则,比如可读性,例如    UserTableSeeder等等。安装完 Laravel 后,会默认提供一个    DatabaseSeeder类。从这个类中,你可以使用    call方法来运行其他填充类,从而允许你控制填充顺序。  
      2、编写填充器  

  要生成一个填充器,可以通过 Artisan 命令    make:seeder。所有框架生成的填充器都位于    database/seeders目录:  
  1. php artisan make:seeder UserTableSeeder
复制代码
一个填充器类默认只包含一个方法:    run。当Artisan命令    db:seed运行时该方法被调用。在    run方法中,可以插入任何你想插入数据库的数据,你可以使用查询构建器手动插入数据,也可以使用 Eloquent 模型工厂。  
  举个例子,让我们修改 Laravel 安装时自带的    DatabaseSeeder类,添加一个数据库插入语句到    run方法:  
  1. <?php

  2. use Illuminate\Database\Seeder;
  3. use Illuminate\Database\Eloquent\Model;

  4. class DatabaseSeeder extends Seeder{
  5.     /**
  6.      * 运行数据库填充
  7.      *
  8.      * @return void
  9.      */
  10.     public function run()
  11.     {
  12.         DB::table('users')->insert([
  13.             'name' => str_random(10),
  14.             'email' => str_random(10).[email protected]',
  15.             'password' => bcrypt('secret'),
  16.         ]);
  17.     }
  18. }
复制代码
使用模型工厂  
  当然,手动指定每一个模型填充的属性是很笨重累赘的,取而代之的,我们可以使用模型工厂来方便的生成大量的数据库记录。首先,查看模型工厂文档来学习如何定义工厂,定义工厂后,可以使用帮助函数    factory来插入记录到数据库。  
  举个例子,让我们创建50个用户并添加关联关系到每个用户:
  1. /**
  2. * 运行数据库填充
  3. *
  4. * @return void
  5. */
  6. public function run(){
  7.     factory('App\User', 50)->create()->each(function($u) {
  8.         $u->posts()->save(factory('App\Post')->make());
  9.     });
  10. }
复制代码
调用额外的填充器  
  在    DatabaseSeeder类中,你可以使用    call方法执行额外的填充类,使用    call方法允许你将数据库填充分解成多个文件,这样单个填充器类就不会变得无比巨大,只需简单将你想要运行的填充器类名传递过去即可:  
  1. /**
  2. * 运行数据库填充
  3. *
  4. * @return void
  5. */
  6. public function run(){
  7.     $this->call(UserTableSeeder::class);
  8.     $this->call(PostsTableSeeder::class);
  9.     $this->call(CommentsTableSeeder::class);
  10. }
复制代码
3、运行填充器  

  编写好填充器类之后,可以使用 Artisan 命令    db:seed来填充数据库。默认情况下,    db:seed命令运行可以用来运行其它填充器类的    DatabaseSeeder类,但是,你也可以使用    --class选项来指定你想要运行的独立的填充器类:  
  1. php artisan db:seed
  2. php artisan db:seed --class=UserTableSeeder
复制代码
你还可以使用    migrate:refresh命令来填充数据库,该命令还可以回滚并重新运行迁移,这在需要完全重建数据库时很有用:  
  1. php artisan migrate:refresh --seed
复制代码
友荐云推荐




上一篇:Issue 57 – October 4th 2016
下一篇:How does public key cryptography work? – Gary explains
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表