Laravel 中使用集合 map 添加字段,返回结果没有添加的字段

使用map进行集合数据机构的修改失败,
这里返回的$value中已经存在我所要添加的字段headimg与nickname,
打印with中的数据也是加进入了的,但最后返回的数据并没有我加入的字段。
下方是打印的数据,我发现打印出来的对象attributes中是有我要的数据,original还是原来的数据,后来看了下文档中的使用方法,用法我也没毛病的呀,这就让我很困惑,因为之前用map既可以修改数据也可以添加数据的呀,现在这里为什么不行了,难道不能再with中使用?

cc1997
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
  1. 首先预加载约束不能使用 limit 、 take 操作, 分页也是一样的 为预加载添加约束

file

  1. 其次你这样的回调嵌套是很难维护且无法复用的。

3.建议写法:

Article 模型中定义一个关联关系:

public function latestComment()
{
      return $this->hasMany(Comment::class)->latest('time')->limit(10);
}

Comment 模型中定义与 user 模型的关联关系:

public function user()
{
    return $this->hasOne(User:class);
}

然后像这样调用即可

   Article::with(['latestComment', 'latestComment.user:headimg,nickname'])->findOrFaild($id);

以上都是随手敲的伪代码,理解思路即可

  1. 还有就是 with 的回调是添加约束构造 SQL 语句的,map 是已经查询到数据在内存中处理数据的,所以你这种写法肯定是不行的。
3年前 评论
讨论数量: 3
  1. 首先预加载约束不能使用 limit 、 take 操作, 分页也是一样的 为预加载添加约束

file

  1. 其次你这样的回调嵌套是很难维护且无法复用的。

3.建议写法:

Article 模型中定义一个关联关系:

public function latestComment()
{
      return $this->hasMany(Comment::class)->latest('time')->limit(10);
}

Comment 模型中定义与 user 模型的关联关系:

public function user()
{
    return $this->hasOne(User:class);
}

然后像这样调用即可

   Article::with(['latestComment', 'latestComment.user:headimg,nickname'])->findOrFaild($id);

以上都是随手敲的伪代码,理解思路即可

  1. 还有就是 with 的回调是添加约束构造 SQL 语句的,map 是已经查询到数据在内存中处理数据的,所以你这种写法肯定是不行的。
3年前 评论
cc1997

明白了大佬

3年前 评论

那为啥 我线上可以 使用map 我本地就不行呢

3年前 评论

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