Lumen企业站内容管理实战 - 在线留言数据填充

在线留言数据填充

 上篇我们把在线留言做好了,但是你发现没有,因为数据少,分页看不到,我只是用手工方式添加了两条信息,如果要添加几十上白条甚至上千条,这样添加太笨了!幸好laravel/lumen给我我们提供了数据填充功能。

第一步:在/database/factories/目录下,你会看到一个示例文件ModelFactory.php,我们仿照这个文件名新建一个MessageFactory.php,为什么是MessageFactory呢?因为我们要填充的表是message,对应的模型是Message,所以,要用MessageFactory.php作为我们Message模型的工厂文件,文件内容如下

<?php


$factory->define(\App\Models\Message::class, function (Faker\Generator $faker) {
    return [
        'title' => $faker->titleMale,
        'name' => $faker->userName,
        'mobile' => mb_substr($faker->phoneNumber, 0, 10),
        'email' => mb_substr($faker->unique()->safeEmail, 0, 30),
        'address' => mb_substr($faker->address, 0, 40),
        'content' => $faker->text(rand(10,100)),
        'state' => rand(0, 1),
        'created_at' => $faker->date('Y-m-d H:i:s'),
        'updated_at' => $faker->date('Y-m-d H:i:s'),
    ];
});

$factory->define()的第一个参数是模型的类,我们填充的是Message模型,所以是\App\Models\message::class,第二个参数是一个回调函数,它返回一个数组,数组的key就是我们数据messages数据表中字段,值是有Faker生成的,它可以帮我们生成指定格式的文本,方便我们填充数据。你想呀,如果让你自己随机生成email的值,你是不是要写代码生成?现在Faker帮我们做了,真的是太好了。Faker都能生成哪些格式的数据?需要你自己去探索。

第二步:在/database/seeds/目录下新建一个MessageTableSeeder.php文件。文件名为什么要MessageTableSeeder,这个我不用再解释了吧。TableSeeder是固定的,TableSeeder左边的就是模型名。注意它需要继承Seeder。

<?php


class MessageTableSeeder extends \Illuminate\Database\Seeder
{

    public function run()
    {
        factory(\App\Models\Message::class, 50)->create();
    }
}

类里边写一个run()方法,factory()的第一个参数是模型的类,第二是指定要往表中添加多少条数据,create()方法是告诉工厂在数据表中写入数据。

第三步:在终端执行命令

composer dump-autoload //先执行找个命令重新生成 Composer 的自动加载器

php artisan db:seed --class=MessageTableSeeder

填充数据用php artisan db:seed命令,--class是指定Seeder目录下的那个类。你执行下命令,看看数据表中有没有数据?先让你你们看下我的

看看,分页也出来了,我这里是设置的是每页15条。

 有同学就问了,那如果要同时填充10表,难道要一个一个命令执行吗?嗯,问得好,问的妙,问的问题呱呱叫!这个larave/lumen已经考虑到了。

打开/database/seeds/DatabaseSeeder.php文件,在run()方法中写入

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
         $this->call('MessageTableSeeder');
    }
}

看$this->call('MessageTableSeeder');中的参数,他就是seeds目录下的文件名。如果想同时把users表也填充数据,新增一行$this->call('UserTableSeeder');前提是已经有了User模型的相关文件。只要把所有你想填充的模型都放到这里,你一个命令,框架就会自动填充这里的所有表。

执行以下命令

php artisan db:seed

注意这里没有指定类,然后再看看messages表中是不是有新的数据。我这里是出现新数据了。

这个框架太好的,我感动的都哭了,今天就到这里吧,我先找点纸巾擦擦泪!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangpeng52758

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值