学习笔记,持续更新
总结
数据填充:
- 模型工厂
database/factories
- 数据填充,生成
seeder
文件,定义填充字段方法 Database/Seeder
调用call
方法- 执行
migrate:refresh
&&db:seed
重置数据库
模型工厂
define
绑定的模型类
,以及在闭包中依赖注入Faker
- 将pwd设置静态变量(全局共享,所有数据密码均一致)
- 设置需要填充的字段并return
数据填充
- artisan生成指定
seeder
文件
- 引入需要填充的模型类(数据表)命名空间
- 在run方法中定义执行的模型和插入字段属性、
- factory(需要生成的模型类)->times(执行次数)->make(生成合集)
- 模型::insert(模型->makeVisible([模型中被隐藏的字段])->toArray())
- 设置指定用户,便于在填充后方便测试
database/seeds/DatabaseSeeder.php
调用call
方法执行数据填充
- 引入基类模型的命名空间
- 在run方法中临时解除字段注入
- 调用
Model::unguard()
解除字段注入 $this->call(需要填充的seeder类文件)
Model::regurad()
恢复字段注入限制
- 调用
- 重置数据库&&快速填充
php artisan migrate:refresh
重置数据php artisan db:seed
(默认执行所有seeder文件填充) 可通过--class=指定seeder文件
php artisan migrate:refresh --seed
同时完成数据库的重置和填充操作
分页
- 控制器调用
模型::paginate(每页显示条数)
- 视图中调用
{!! 模型实例->render() !!}
简介:实例用户
在实际项目开发过程中,经常需要用到假数据对数据库进行填充以方便调试,原始做法是手工对数据库一个个创建,或者从团员的机器导入数据到开发环境中。lara提供一套更现代化、简单易用的数据填充方案。假数据分为两个步骤
- 对要生成假数据的模型指定字段进行赋值-
模型工厂factory
- 批量生成假数据模型
数据填充seeds
模型工厂
lara默认集成了faker
拓展包。
//创建模型工厂实例
$faker=Faker\Factory::create()
//$faker->字段()方式调用
//生成用户名
$faker->name;
databases/factories/UserFactory.php
define
定义一个指定数据模型(如图User
)的模型工厂。define
接收两个参数
- 第一个为指定的Eloquent模型类
- 第二个为闭包函数,接收
Faker
php函数库实例 - 方法体中生成假数据并为模型指定字段赋值
数据填充
lara中使用seeder
对数据库填充测试数据。所有的seeder
类文件存放在database/seeds
目录下。创建时需要按照驼峰法
来命名。LARA中约定了相关配置,例如User模型对应Users表,使用artisan创建seedrs时应命名为UsersTableSeeder
。
$ php artisan make:seeder UsersTableSeeder
databases/seeds/UsersTbaleSeeder
创建成功后,需要引入需要填充的模型(数据表)的命名空间
,并且在run
方法中定义相关字段
扫描二维码关注公众号,回复:
3109412 查看本文章
接下来还需要在DatabaseSeeder
中调用call
方法运行指定的假数据填充文件
完成上述操作后,可以开始生成假数据了。在此之前建议migrate:refresh
重置数据库
//重置数据库
$ php artisan migreate:refresh
//此处没有指定,即执行所有seed文件,可使用 --clas=指定执行填充的文件
$ php artisan db:seed
如果需要单独指定执行UsersTableSeeder
数据库填充文件,可以如下
$ php artisan migrate:refresh
$ php artisan db:seed --class=UsersTableSeeder
当然,也可以使用一条命名完成整个数据库重置和填充操作
$ php artisan migreate:refrsh --seed
分页相关
如果在页面一次性读取所有用户,此时网页响应速度会下降,影响性能。可使用分页读取数据库中部分数据
控制器
//在需要分页的地方调用 模型::paginate(读取条数)即可
$user=User::paginate(10);
//绑定参数返回视图
return view('视图',compact('users'));
视图
//类似smarty模版的定界符设定,
//Boostrap框架的样式,渲染出来的视图连接统一带会带上 ?page来指定页数的连接
//以往的blade模版使用的是{{}}方式,此处需要使用{!! !!}这样生成的html连接才不会被转义
//在视图中添加如下指令
{!! $users->render() !!}