【问题标题】:Combine Laravel collection results, aggregate one field合并 Laravel 收集结果,聚合一个字段
【发布时间】:2019-01-30 00:59:51
【问题描述】:

我有一个包含重复结果的集合,但相关字段中的数据不同。我想消除重复项,但通过组合该字段的值来保留其他数据。我似乎找不到这样做的好方法。我的结果集如下所示:

"bankers" => Collection {#663 ▼
  #items: array:5 [▼
    0 => Collection {#465 ▼
      #items: array:5 [▼
        "banker_id" => 13
        "banker_name" => "John Banker"
        "type" => "lending"
        "deal_score" => 1
      ]
    }
    1 => Collection {#455 ▼
      #items: array:5 [▼
        "banker_id" => 62667
        "banker_name" => "Harvey Aandreau"
        "type" => "lending"
        "deal_score" => 0
      ]
    }
    2 => Collection {#419 ▼
      #items: array:6 [▼
        "banker_id" => 13
        "banker_name" => "John Banker"
        "type" => "quotes"
        "deal_score" => 1
      ]
    }
    3 => Collection {#410 ▼
      #items: array:6 [▼
        "banker_id" => 297
        "banker_name" => "Melissa Jablonsky"
        "type" => "quotes"
        "deal_score" => 1
      ]
    }
  ]
}

我想删除第二个重复的“John Banker”,但是将“type”字段的值添加到上一条记录中,例如:

"bankers" => Collection {#663 ▼
  #items: array:5 [▼
    0 => Collection {#465 ▼
      #items: array:5 [▼
        "banker_id" => 13
        "banker_name" => "John Banker"
        "type" => "lending, quotes"
        "deal_score" => 1
      ]
    }
    1 => Collection {#455 ▼
      #items: array:5 [▼
        "banker_id" => 62667
        "banker_name" => "Harvey Aandreau"
        "type" => "lending"
        "deal_score" => 0
      ]
    }
    3 => Collection {#410 ▼
      #items: array:6 [▼
        "banker_id" => 297
        "banker_name" => "Melissa Jablonsky"
        "type" => "quotes"
        "deal_score" => 1
      ]
    }
  ]
}

我需要保留当前订单。如果需要,可以将“类型”字段更改为数组。任何建议将不胜感激。

【问题讨论】:

  • 无法发布您如何调用此数组的代码

标签: laravel collect


【解决方案1】:

感谢Joseph Silber的以下建议:

$bankers->groupBy('banker_name')->map(function ($bankers) {
    return array_merge($banker[0]->all(), [
        'type' => $bankers->pluck('type')->implode(',');
    ]);
});

【讨论】:

    猜你喜欢
    • 2014-01-25
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2020-08-20
    • 1970-01-01
    • 2021-06-26
    • 2019-04-09
    相关资源
    最近更新 更多