如何修改关联模型的数据

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

我尝试的办法

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

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

3个月前 评论
臭鼬 (楼主) 3个月前

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

4个月前 评论
臭鼬 (楼主) 4个月前
阿卡卡 (作者) 4个月前

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

4个月前 评论
臭鼬 (楼主) 4个月前

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

4个月前 评论
臭鼬 (楼主) 4个月前
颠倒的玉石 (作者) 4个月前

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

4个月前 评论
臭鼬 (楼主) 4个月前

兄弟,一个月了,问题解决了吗?解决了的话能发出来参考下吗?没有的话,我再说一下我的思路。首先你的$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个月前

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