如何修改关联模型的数据

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

我尝试的办法

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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

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