为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 使用模型修改器的 $appends 时,无法使用 faker 生成假数据

Laravel 使用模型修改器的 $appends 时,无法使用 faker 生成假数据

PHP
万千封印 2018-12-17 09:00:55
版本:laravel 5.7当使用模型修改器的$appends属性,新增元素时,使用faker生成假数据时,报错误:Unknown column 'sex_str'模型相关代码:protected $appends = ['sex_str'];public static $sexAttr = ['未知', '男', '女'];public function getSexStrAttribute(){    return array_key_exists($this->sex, self::$sexAttr) ? self::$sexAttr[$this->sex] : ''; }faker相关代码:$factory->define(\App\Models\User::class, function (Faker $faker) {    return [        'sex' => random_int(1, 2),                  ]; });屏蔽$appends属性就正常了,怎么解决模型修改器影响生成假数据的问题?补充:模型修改器的用途是:数据库存的sex是int类型,取出时增加sex_str,转换为字符串。生成假数据时,faker里加了sex生成的。
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

找到原因了,seeder里写法问题:

        $user = factory(\App\Models\User::class)->times(1000)->make();
        DB::table('users')->insert($user->toArray());

我用的insert,应该用create

但是用create会生成1000条sql,insert只会生成一条sql,
因为factory里嵌套了一些关联查询,这样生成数据就很慢。

先改成create了,不知道还有没有其它方法?


查看完整回答
反对 回复 2018-12-17
  • 1 回答
  • 0 关注
  • 507 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信