laravel5.2总结--数据填充
1 生成一个seeder文件
<?php use Illuminate\Database\Seeder;
use DB;
use App\Models\Student; class StudentsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//使用基本查询构造器
DB::table('students')->insert([
'name' => str_random(10),
]);
//可以使用orm模型
Student::insert([
'name' => str_random(10),
]);
//还可以使用模型工厂
}
}
2 单独调用
3 批量调用
<?php use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard(); // $this->call(UserTableSeeder::class);
//这里我们可以调用更多生成的填充数据类,便于管理
$this->call(StudentsTableSeeder::class);
Model::reguard();
}
}
补充:模型工厂
1 模型工厂示例
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
2 创建模型工厂
//示例 对应User模型
$factory->define(App\Models\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name, //使用faker生成数据
'email' => $faker->safeEmail,
'password' => bcrypt(str_random(10)), //不使用faker生成数据
'remember_token' => str_random(10),
];
}); //创建一个UserAccount模型的工厂
$factory->define(App\Models\UserAccount::class, function (Faker\Generator $faker) {
return [
'qq' => rand(10000,999999999999),
'weixin' => $faker->userName,
'weibo' => $faker->word,
];
}); //同一个UserAccount模型,不同的工厂
$factory->defineAs(App\Models\UserAccount::class,'mark', function (Faker\Generator $faker) {
return [
'qq' => rand(10000,999999999999),
'weixin' => $faker->userName,
'weibo' => $faker->word,
'mark' => 1,
];
}); //同一个UserAccount模型,不同的工厂,第二种写法
//使用raw方法获取基本属性而不用重复基本用户工厂中的所有属性,获取这些属性后,只需将你要求的额外值增补进去即可
$factory->defineAs(App\Models\UserAccount::class,'mark2', function (Faker\Generator $faker) use($factory) {
// 注意向闭包函数传递变量使用use方法
$user_account = $factory->raw(App\Models\UserAccount::class);
return array_merge($user_account, ['mark' => 1]);
});
//使用基本的用户工厂创建一个用户,并使用基本的用户账号工厂
factory(App\Models\User::class)->create()->each(function($u) {
$u->account()->save(factory(App\Models\UserAccount::class)->make());
});
//使用基本的用户工厂创建2个用户,并使用基本的用户账号工厂
factory(App\Models\User::class, 2)->create()->each(function($u) {
$u->account()->save(factory(App\Models\UserAccount::class)->make());
});
//使用基本的用户工厂创建2个用户,并使用 "mark" 用户账号工厂
factory(App\Models\User::class, 2)->create()->each(function($u) {
$u->account()->save(factory(App\Models\UserAccount::class,'mark')->make());
});
//使用基本的用户工厂创建2个用户,并使用 "mark2" 用户账号工厂
factory(App\Models\User::class, 2)->create()->each(function($u) {
$u->account()->save(factory(App\Models\UserAccount::class,'mark2')->make());
});
laravel5.2总结--数据填充的更多相关文章
- Laravel5.1学习笔记18 数据库4 数据填充
简介 编写数据填充类 使用模型工厂类 调用额外填充类 执行填充 #简介 Laravel includes a simple method of seeding your database with t ...
- Laravel 实践之路: 数据库迁移与数据填充
数据库迁移实际上就是对数据库库表的结构变化做版本控制,之前对数据库库表结构做修改的方式比较原始,比如说对某张库表新增了一个字段,都是直接在库表中执行alter table xxx add .. 的方式 ...
- .net dataGridView当鼠标经过时当前行背景色变色;然后【给GridView增加单击行事件,并获取单击行的数据填充到页面中的控件中】
1.首先在前台dataGridview属性中增加onRowDataBound属性事件 2.然后在后台Observing_RowDataBound事件中增加代码 protected void Obser ...
- ECharts SSH+JQueryAjax+Json+JSP将数据库中数据填充到ECharts中
本文引用自:http://blog.csdn.net/ArcticFoxHan/article/details/38071641 1.导入包,搭建SSH框架 导入Jquery的JS包,<sc ...
- Laravel-高级篇-Auth-数据迁移-数据填充
(慕课网_轻松学会Laravel-高级篇_天秤vs永恒老师_http://www.imooc.com/learn/702) 一.生成Auth所需文件 在Artisan控制台输入以下命令 php art ...
- highcharts柱状图和饼图的数据填充
1.其实数据填充很简单,它们就是json的格式,然后后台按照这种格式去套数据发给前端:前端再做一下连接处理等就行了. $('#program_statistics_bar').highcharts({ ...
- Laravel 5.2 教程 - 数据填充
一.简介 Laravel提供的填充类(seed),可以让大家很容易的实现填充测试数据到数据库.所有的填充类都位于database/seeds目录.填充类的类名完全由你自定义,但最好还是遵循一定的规则, ...
- CVPixelBuffer的创建 数据填充 以及数据读取
CVPixelBuffer的创建数据填充以及数据读取 CVPixelBuffer 在音视频编解码以及图像处理过程中应用广泛,有时需要读取内部数据,很少的时候需要自行创建并填充数据,下面简单叙述. 创建 ...
- 将Json数据 填充到 实例类 的函数
/// <summary> /// 将Json数据 填充到 实例类 /// </summary> /// <typeparam name="T"> ...
随机推荐
- 零基础逆向工程24_C++_01_类_this指针_继承本质_多层继承
1 类内的成员函数和普通函数的对比 1.1 主要是从参数传递.压栈顺序.堆栈平衡来总结. 1.参数传递:成员函数多传一个this指针 2.压栈顺序:成员函数会将this指针压栈,在函数调用取出 3.堆 ...
- 在Ubuntu环境下配置NIMH MEG Core Facility之CTF Tools
在Ubuntu环境下配置NIMH MEG Core Facility之CTF Tools 网站有提示: The install script won't work, but you can copy ...
- rmtree函数
blog.csdn.net/my2010sam/article/details/8956353
- 解决Android Studio和Android SDK Manager无法在线更新的问题[转]
升级时提示 Connection failed. Please check your network connection and try again 修改安装目录下bin\studio.exe.vm ...
- 新版graylog2安装过程
Graylog是一个开源的 log 收容器,背后的储存是搭配 mongodb,而搜寻引擎则由 elasticsearch 提供.以前版本主要有两个部分集合而成 server 与 web interfa ...
- NetTime——c++实现计算机时间与网络时间的更新
<Windows网络与通信程序设计>第二章的一个小例子,网络编程入门. #include "stdafx.h" #include <WinSock2.h> ...
- linux 命令——23 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- 【BZOJ1029】[JSOI2007] 建筑抢修(堆优化贪心)
点此看题面 大致题意: 有N个受到严重损伤的建筑,对于每个建筑,修好它需要\(T1\)秒,且必须在\(T2\)秒之前修完(\(T1\)与\(T2\)不是固定值),问你最多能修好几个建筑. 题解 一看到 ...
- 机器学习中正则化项L1和L2的直观理解
正则化(Regularization) 概念 L0正则化的值是模型参数中非零参数的个数. L1正则化表示各个参数绝对值之和. L2正则化标识各个参数的平方的和的开方值. L0正则化 稀疏的参数可以防止 ...
- PageHelper 记录总条数不正确问题处理
//PageHelper.startPage会返回一个page对象,这个对象在查询结果出来后会把页数,记录总数给page对象,用page.getPages()和getTotal()获取页数和记录总数. ...