如何修改关联模型的数据

user关联了userTag模型,我想将关联数据userTag修改成一维数组,但是不行

我尝试的办法

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

兄弟,一个月了,问题解决了吗?解决了的话能发出来参考下吗?没有的话,我再说一下我的思路。首先你的$data变量是通过

Model::with(['userTag'])->get();

获取的结果集吗?如果是的话,那这个$data结果集是一个集合,集合的每一项都是一个 Model 对象。你第一个截图后的 json 数组键名是userTag,与关联关系的方法名相同,为什么呢?因为将结果集转化为 json 时,是将关联关系的数据做了 json 转换。而你操作

$v->userTag = $v->userTag->pluck('tag_name');

时,实际上是给集合中的每个 Model 对象赋值,并没有给关联关系中的数据赋值,所以 json 的结果不会有变化。

实际操作可以参考下:

    $data->map(function($v){
        $v->setRelation('userTag', $v->userTag->pluck('tag_name'));
    });
3年前 评论
臭鼬 (楼主) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
讨论数量: 6

你这是要对查询结果集,做处理才行,而不是使用pluck数据库来处理

3年前 评论
臭鼬 (楼主) 3年前
熬夜数豆豆 (作者) 3年前

file 这个名字写错了吧。 另外第一种方式是可以的。:)

3年前 评论
臭鼬 (楼主) 3年前
颠倒的玉石

用集合吧,那是一个神奇的模块

3年前 评论
臭鼬 (楼主) 3年前
颠倒的玉石 (作者) 3年前

按我猜测,应该拿 transform 返回结果。而不是后面又去 data 转数组

3年前 评论
臭鼬 (楼主) 3年前

兄弟,一个月了,问题解决了吗?解决了的话能发出来参考下吗?没有的话,我再说一下我的思路。首先你的$data变量是通过

Model::with(['userTag'])->get();

获取的结果集吗?如果是的话,那这个$data结果集是一个集合,集合的每一项都是一个 Model 对象。你第一个截图后的 json 数组键名是userTag,与关联关系的方法名相同,为什么呢?因为将结果集转化为 json 时,是将关联关系的数据做了 json 转换。而你操作

$v->userTag = $v->userTag->pluck('tag_name');

时,实际上是给集合中的每个 Model 对象赋值,并没有给关联关系中的数据赋值,所以 json 的结果不会有变化。

实际操作可以参考下:

    $data->map(function($v){
        $v->setRelation('userTag', $v->userTag->pluck('tag_name'));
    });
3年前 评论
臭鼬 (楼主) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前
臭鼬 (楼主) 3年前
LiamHao (作者) 3年前

遇过。文章和文章标签,返回的话,想要 ["猫", "狗"],我是直接 foreach。但是后面想想,还是直接二维数组就好,拿给前端,前端 React map 的时候,key=id 也可以用得上,主要是知识不够,又想不那么不优雅 :speak_no_evil:

3年前 评论
臭鼬 (楼主) 3年前

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