四时宝库

程序员的知识宝库

laravel5.1之数据填充-「布尔」(使用滚动条进行控制返回单元格的数据可以是)

laravel 5 之数据填充的使用,可能在想???

1,既然是数据填充,是不是和model有关?

2,数据填充的应用场景,什么时候用,这样用的好处?

3,laravel这么强大,填充给我们带来什么样的方便效果?

首先当我们使用laravel框架去书写项目的时候,肯定需要很多测试数据,各个页面,一般情况的解决方法是,自己一个一个去添加或者原先书写好的数据直接导入,爬虫等等去解决,当然这样去添加的话,肯定少不了sql语句和手动的去操作,相应的这些测试数据并没有什么技术含量,但是这样做会浪费了自己的很多精力,感觉得不偿失,所以,遇到这些问题,我们可以使用laravel的seed类去填充数据,当然使用起来非常方便.

首先,laravel所有的 seed 类都放在 database/seeds 目录下。你可以任意地为 Seed 类命名,但是应该遵守某些大小写规范,可用类似 UserTableSeeder 之类的命名。 Laravle 默认为你定义了一个 DatabaseSeeder 类。你可以在这个类中使用 call 方法来运行其它的 seed 类,以借此控制数据填充的顺序。

第一,我们可以通过artisan工具make:seeder这个命令去创建一个seeder,然而生成的所有的seeder都是放在database/seeds下

执行成功,在database/seeds 会多出一个UserTableSeeder.php文件,在 seeder 类里只有一个默认方法:run。当运行 db:seed Artisan 命令 时就会调用此方法。你可以在 run 方法中给数据库添加任何数据。你可使用 查询语句构造器 或 Eloquent 模型工厂 来手动添加数据。如在run方法下设置给users 表去添加随机的数据:

然后,我们可以在DatabaseSeeder.php文件下调用call()方法,运行db:seeder这个artisan命令会直接调用run方法去生成数据,如果还有其他的seeder类,那么我们也可以用类似的方法去使用,如:

运行命令进行数据填充

如果在DatabaseSeeder.php文件中调用其他的类,但是我们只想往users表中添加数据,如:

可以执行这个命令

当然,这样的手动去运行命令去添加数据还是比较麻烦的,那么我们还可以使用另外一种方法,laravel自带的模型工厂中的factory这个辅助函数去进行数据填充,创建测试数据时,除了手动的来设置每个字段的值,还可以使用 Eloquent 模型 的「工厂」来设置每个属性的默认值。在开始之前,你可以先查看下应用程序的 database/factories/ModelFactory.php 文件。此文件包含一个现成的工厂定义:

在这个类里提前给我们准备好的文件,在闭包中携带的Faker类是laravel准好的数据,我们直接调用命名好的参数,其他的字段自己可以去设置随机字符或数字

有时你可能希望针对同一个 Eloquent 模型类来创建多个工厂。例如,除了一般用户的工厂之外,还有「管理员」工厂。你可以使用 defineAs 方法来定义这个工厂:

上述呢是laravel给我们准备好的,如果你想为其他的表中去填充数据,那么也可以自己去添加如我想为articles表中添加数据,如:请点击此处输入图片描述

定义好自己的模型工厂,怎么去使用呢?

在工厂定义后,就可以在测试或是数据库的填充文件中,通过全局的 factory 函数来生成模型实例。接着让我们先来看看几个创建模型的例子。首先我们会使用 make 方法创建模型,但不将它们保存至数据库:

如果你想重写模型中的某些默认值,则可以传递一个包含数值的数组至 make 方法。只有指定的数值会被替换,其它剩余的数值则会按照工厂指定的默认值来设置:

你也可以创建一个含有多个模型的集合,或创建一个指定类型的模型:

make方法仅仅是创建这样的一个实例,但是并没有添加到数据库,那么我们可以同过 create 方法来创建模型实例,而且也可以使用 Eloquent 的 save 方法来将它们保存至数据库:

同样的,你可以在数组传递至 create 方法时重写模型的属性:

通过这些方法,我们在使用laravel 框架去测试项目的时候就可以使用数据填充和模型工厂去进行数据添加以至于方便我们调试,谢谢大家来学习!!!



发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接