首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改Laravel中两个模型的子集合

更改Laravel中两个模型的子集合
EN

Stack Overflow用户
提问于 2021-05-01 00:47:40
回答 2查看 33关注 0票数 0

我有这个:

代码语言:javascript
复制
$merge = parents::with('children')->get();

这给了我:

代码语言:javascript
复制
  [{
  "id":1,
  "parent_name":"Robert",
  "children":[{
            "id":5,"name":"Susan","dob":"2010-11-11"},
            {"id":7,"name":"Tony","dob":"2014-12-10"}]
  }]

我想将age添加到具有预期输出的子代中,如下所示:

代码语言:javascript
复制
  [{
  "id":1,
  "parent_name":"Robert",
  "children":[{
            "id":5,"name":"Susan","dob":"2010-11-11","age":"10"},
            {"id":7,"name":"Tony","dob":"2014-12-10","age":"7"}]
  }]

我试过这个:

代码语言:javascript
复制
 return $merge->map(function ($detail) {
    $detail->age = \Carbon\Carbon::parse($detail->dob)->diffInYears();
    return $detail;});

它给了我:

代码语言:javascript
复制
  [{
  "id":1,
  "parent_name":"Robert",
  "age":0,
  "children":[{
            "id":5,"name":"Susan","dob":"2010-11-11"},
            {"id":7,"name":"Tony","dob":"2014-12-10"}]
  }]

我试过了:

代码语言:javascript
复制
    return $merge->children->map(function ($detail) {
    $detail->age = \Carbon\Carbon::parse($detail->dob)->diffInYears();
    return $detail;});

它返回

代码语言:javascript
复制
Property [children] does not exist on this collection instance.

有什么简单的方法可以实现我的目标吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-01 01:30:35

循环每个父代及其子代,并添加新的age属性

代码语言:javascript
复制
$data = parents::with('children')->get();
        $data->each(function($parent) {
            $parent->children->each(function($child){
                $child->age = \Carbon\Carbon::parse($child->dob)->diffInYears();
            });
        });

我建议,我认为更好的方法是向您的模型添加一个属性,如下所示:

代码语言:javascript
复制
class modelName extends Model{
  protected $append = ['age'];

  public function getAgeAttribute(){
    return \Carbon\Carbon::parse($this->dob)->diffInYears();
  }


}
票数 1
EN

Stack Overflow用户

发布于 2021-05-01 01:06:16

循环访问父级及其子级。最终计算年龄并将值放入数组。

代码语言:javascript
复制
$merge->map(function ($mer) {
    $mer->children->map(function ($child) {
        $age = \Carbon\Carbon::parse($child->dob)->diffInYears();
        $child->age = $age;
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67337602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档