加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Laravel框架使用Seeder实现自动填充数据功能

发布时间:2020-12-14 20:05:19 所属栏目:大数据 来源:网络整理
导读:本篇章节讲解Laravel框架使用Seeder实现自动填充数据功能。供大家参考研究具体如下: 要查看代码,可以点击链接:https://github.com/laravel/framework Laravel自动填充数据使用的是Seeder类 你自定义的Seeder只有一个run函数,里面写你的自动填

本篇章节讲解Laravel框架使用Seeder实现自动填充数据功能。分享给大家供大家参考,具体如下:

要查看代码,可以点击链接:https://github.com/laravel/framework

Laravel自动填充数据使用的是Seeder类

你自定义的Seeder只有一个run函数,里面写你的自动填充步骤

大家会注意到这两个函数

曾经对这两个函数非常疑惑,到底是干什么用的,只能推测是一对互为反作用的函数。于是去查了下源代码。

在目录

看Laravel作者的注释可以知道,是对数据填充限制的操作。

所以unguard在前,reguard在后,unguard负责解除自动填充操作限制,reguard负责恢复限制。

在填充操作之前,建议使用模型的成员函数  

这个函数会清空这个模型所对应的数据表,所以请慎重使用。

call('PostTableSeeder'); Model::reguard(); } } class PostTableSeeder extends Seeder { public function run() { AppPost::truncate(); factory(AppPost::class,1000)->create(); } }

这里有读者会问:为什么我们不把填充操作都写在自带的DatabaseSeeder的run函数里呢?

因为我们开发一个完整的系统时,可能要填充的数据表有很多张,不希望每次都要大量修改这个run函数。我们还希望每次填充都能保留下这个填充的过程,所以我们宁愿新写一个类,然后用$this->call()函数来调用。

接下来我们来谈谈factory。

文件目录

define(AppPost::class,function ($faker) { return [ 'title' => $faker->sentence(mt_rand(3,10)),'content' => join("nn",$faker->paragraphs(mt_rand(3,6))),'published_at' => $faker->dateTimeBetween('-1 month','+3 days'),]; });

虽然能看懂,但是不知道这个$factory变量是什么?因此去查Factory类找。

在目录

definitions[$class][$name] = $attributes; }
of($class)->create($attributes); }

开始填充数据,我们还是使用artisan命令行

这个命令会执行你写在DatabaseSeeder.php里面所有的类的run函数,如果以后项目复杂了,没有必要执行已经执行过的,所以在命令行后面加参数,只要执行某个类的run函数即可

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读