建立于: 6年前 ( 更新: 6年前 )
本文将一步一步介绍相关的命令用例:
Model=>Factory=>Seeder=>DatabaseSeeder
一步一脚印,让我们就从Model开始检视所有流程到DatabaseSeeder。
您阅读本文前,您应该要了解Laravel中的 make:migration相关用途 。
一、 Model (模型)
透过简单的ActiveRecord轻松的对数据库进行修改,简单说,让我们以对象的方式进行数据的修改。
您可以由这里看到Active Record说明,这里引用RailsGuids的文章给大家参考。
那在Laravel中如何建Model呢? 记得请用单数,一个对象Model Object代表是单数,
例如$obj->title而不是$objs->title。
因为数据表内会有多笔数据,所以数据表是 contents 复数,非常符合逻辑,
当然,我们也可以自定义Mode所对映的Table名称,例如,我在Content.php这个Model中添加如下:
是因为这是旧进程转Laravel,这个 content table 已存在很久,被我列为古迹了,动不得,
无法更名为contents。
所以Laravel的Model提供高度的自由,虽然有默认的规则,但是我们也可以依自己的状况及需求调整,
诸如table名称,或是PK栏位(id)等,但是,如果您是新的项目,请勿任性自定义Table的名称或PK哦!
殊殊用法异常,这里不在多做说明。
二、Factory(工厂)
在Lravel的5.5后,可以对各别的Model,创建各别的工厂。
先来看看命令:
上方命令,在这间工厂( StudentShareFactory )中,我定义(define)了一个 App\Student 的 Model ,
并透过 Faker 生成假数据,存入栏位中(下图)。
在下方的Sample中可能较原来Laravel默认的复杂一点,但是基本运行一次就会创建一笔假数据到students的数据表中 ,
这里我有一个有趣的使用方式,我的 c_index 栏,需要依序新建,
也就是我创建一百笔数据时,c_index栏,要依序,由1加到100,所以我建了一个自定义的Class处理这件事情。
有了Facetory后,我们可以在透过Tinker(
下图中(Tinker的交互模式),透过 factory ,我创建了 10 笔随机的假数据,到students数据表。
三、Seeder(播种者)
Seeder的用途,让我们可以不透过手动运行 tinker 来创建假数据。
如何建seeder,我想,大家或许猜到了,当然就是
我想读到这里,您应该已经会
并且使用
在下图run()的 methods 内,再补上刚我在Tinker中所用的建假数据的工厂命令,
例如这里,也就是当这个run()被运行时,就可以一口气创建300笔假数据。
我们可以用
例如这里的StudentShareSeeder,即可生成300笔的假数据,
一个新的网站没假数据怎么套版呢,您说是吧。
注: seeder不止可以拿来生成假数据,也可以拿来生成一个Project最初所所需要的真数据。
四、DatabaseSeeder
要能快速的创建一个可运作的开发环境,当然不需要手动下那么多命令,应该就是用
当不指定--class时,默认就会采用 DatabaseSeeder 。
在下图的DatabaseSeeder.php中,可以看见,我调用了一堆的Seeder。
所以一个可被重覆使用的Project,我会运行migration后,再运行
来生成后台所需的基本数据。
举例: 我套版的后台固定的新建修删功能及模块化的表单,因此不需搞个网站就重写一次新建修删,
当我要套版一个新的网站时,我只需git clone后台的Project下来。
再运行
然后依美工给我的静态页进行blade前台套版了,所以套版后台,可被重覆使用,
透过
所以有了
在上图的例子中,我的OwBaseSeeder,他跑的可不是factory,而是Laravel的Query Builder。
来看看我这里的OwBaseSeeder.php怎么跑Insert基本的数据。
五、help(帮助)
再让我们回到Model, make:model 命令相当多好用的参数,这里以Laravel 5.5为例。
-a或是-m等。
我们对於Laravel的artisan命令有不了解,想了解更多时,都可以使用 help 这个 keyword 取得说明。
例如,在建Model的同时,顺便一起生成其他需要文件,例如: Factory、Controller及migration文件等。
底下,示意图:
Model=>Factory=>Seeder=>DatabaseSeeder
一步一脚印,让我们就从Model开始检视所有流程到DatabaseSeeder。
您阅读本文前,您应该要了解Laravel中的 make:migration相关用途 。
一、 Model (模型)
透过简单的ActiveRecord轻松的对数据库进行修改,简单说,让我们以对象的方式进行数据的修改。
您可以由这里看到Active Record说明,这里引用RailsGuids的文章给大家参考。
那在Laravel中如何建Model呢? 记得请用单数,一个对象Model Object代表是单数,
例如$obj->title而不是$objs->title。
php artisan make:model Content
上方命令,创建了一个名为Content的model,这个Model默认对映到数据表中的 contents 数据表,因为数据表内会有多笔数据,所以数据表是 contents 复数,非常符合逻辑,
当然,我们也可以自定义Mode所对映的Table名称,例如,我在Content.php这个Model中添加如下:
protected $table='content';
为何这样做,绝对不是因为我任性,也不是这样做比较x或是装逼,是因为这是旧进程转Laravel,这个 content table 已存在很久,被我列为古迹了,动不得,
无法更名为contents。
所以Laravel的Model提供高度的自由,虽然有默认的规则,但是我们也可以依自己的状况及需求调整,
诸如table名称,或是PK栏位(id)等,但是,如果您是新的项目,请勿任性自定义Table的名称或PK哦!
殊殊用法异常,这里不在多做说明。
二、Factory(工厂)
在Lravel的5.5后,可以对各别的Model,创建各别的工厂。
先来看看命令:
php artisan make:factory StudentSahreFactory
在上方的命令中,即可创建一个 StudentShareFactory.php 工厂,工厂通常用来建假数据。上方命令,在这间工厂( StudentShareFactory )中,我定义(define)了一个 App\Student 的 Model ,
并透过 Faker 生成假数据,存入栏位中(下图)。
在下方的Sample中可能较原来Laravel默认的复杂一点,但是基本运行一次就会创建一笔假数据到students的数据表中 ,
这里我有一个有趣的使用方式,我的 c_index 栏,需要依序新建,
也就是我创建一百笔数据时,c_index栏,要依序,由1加到100,所以我建了一个自定义的Class处理这件事情。
有了Facetory后,我们可以在透过Tinker(
php artisan tinker
)提供的命令,轻松创建单笔或多笔的假数据了。下图中(Tinker的交互模式),透过 factory ,我创建了 10 笔随机的假数据,到students数据表。
三、Seeder(播种者)
Seeder的用途,让我们可以不透过手动运行 tinker 来创建假数据。
如何建seeder,我想,大家或许猜到了,当然就是
make:seeder
(生成:播种者)。我想读到这里,您应该已经会
make:model
及 make:factory
了,并且使用
php artisan tinker
创建假数据。
php artisan make:seeder StudentShareSeeder
上方的命令中,我创建了一个 StudentSahreSeeder.php ,生成后,用我们的编辑器找到该档,在下图run()的 methods 内,再补上刚我在Tinker中所用的建假数据的工厂命令,
例如这里,也就是当这个run()被运行时,就可以一口气创建300笔假数据。
我们可以用
db:seed --class=
命令,来运行指定的Seeder,例如这里的StudentShareSeeder,即可生成300笔的假数据,
一个新的网站没假数据怎么套版呢,您说是吧。
php artisan db:seed --class=StudentShareSeeder
未指定--class时, php artisan db:seed
,默认他会调用DatabaseSeeder.php。注: seeder不止可以拿来生成假数据,也可以拿来生成一个Project最初所所需要的真数据。
四、DatabaseSeeder
要能快速的创建一个可运作的开发环境,当然不需要手动下那么多命令,应该就是用
db:seed
即可。当不指定--class时,默认就会采用 DatabaseSeeder 。
在下图的DatabaseSeeder.php中,可以看见,我调用了一堆的Seeder。
所以一个可被重覆使用的Project,我会运行migration后,再运行
db:seed
,来生成后台所需的基本数据。
举例: 我套版的后台固定的新建修删功能及模块化的表单,因此不需搞个网站就重写一次新建修删,
当我要套版一个新的网站时,我只需git clone后台的Project下来。
再运行
composer install
,调整.env(网站域名,OAuth主机指定)及建数据库等动作,然后再运行php artisan migrate
及php artisan db:seed
,搞定,我就能登录至后台设置所需的表单样式等功能,及生成假数据了,然后依美工给我的静态页进行blade前台套版了,所以套版后台,可被重覆使用,
透过
db:seed
让我可以快速的创建起整个后台运作基本环境。
php artisan db:seed
在上方命令运行后,他会跑DatabaseSeeder,瞬间生成定义好,我开发时所需要的测试数据罗,所以有了
db:seed
,拿来创建Project最初所需要的共用数据,不论自用还是他用都非常方便的。在上图的例子中,我的OwBaseSeeder,他跑的可不是factory,而是Laravel的Query Builder。
来看看我这里的OwBaseSeeder.php怎么跑Insert基本的数据。
五、help(帮助)
再让我们回到Model, make:model 命令相当多好用的参数,这里以Laravel 5.5为例。
-a或是-m等。
我们对於Laravel的artisan命令有不了解,想了解更多时,都可以使用 help 这个 keyword 取得说明。
php artisan help make:model
例如,在建Model的同时,顺便一起生成其他需要文件,例如: Factory、Controller及migration文件等。
底下,示意图:
No Comment
Post your comment