可以动态启用 / 停用修改器吗?

在填充数据的时候,能不能暂时关闭修改器?
当设置$model->url的值时,会调用访问器来将url转换为json格式,
而下面执行insert时,由于需要$works->toArray(),所以又调用了访问器来将json转换为数组。
导致插入数据库时类型报错

        $works = factory(\App\Models\Work::class)->times(50)->make()->each(function ($model,$index)use($user_ids,$video_urls,$image_urls,$category_ids){
            $model->user_id = array_random($user_ids);
            $model->category_id = array_random($category_ids);
            $model->url = ['original' => array_random($video_urls)];
            $model->cover = array_random($image_urls);
        });

        \App\Models\Work::insert($works->toArray());

然后只有自己再次转换一次?:

        $works = factory(\App\Models\Work::class)->times(50)->make()->each(function ($model,$index)use($user_ids,$video_urls,$image_urls,$category_ids){
            $model->user_id = array_random($user_ids);
            $model->category_id = array_random($category_ids);
            $model->url = ['original' => array_random($video_urls)];
            $model->cover = array_random($image_urls);
        });

        $works = $works->toArray();

        foreach ($works as &$work){
            $work['url'] = json_encode($work['url']);
        }

        \App\Models\Work::insert($works);

能不能手动关闭或者开启修改器呀?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

有更好的方法么?

5年前 评论

可以使用getAttributes()

5年前 评论

getOriginal 获取原始值

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!