php - Laravel group 2 按键收集
问题描述
我正在做一个 Laravel 项目,但遇到了一个问题,我从数据库中得到 2 个东西(费用和付款),它返回一个集合对象。我需要按键对它们进行分组,这里是数组:
[items:protected] => Array
(
[0] => stdClass Object
(
[date_payment] => 2018-01-01
[total_payment] => 19761.62
)
)
)
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => stdClass Object
(
[date_payment] => 2018-01-29
[total_charges] => 5184.4399862289
)
[1] => stdClass Object
(
[date_payment] => 2017-09-04
[total_charges] => 0
)
)
)
我需要它是这样的:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => stdClass Object
(
[date_payment] => 2018-01-29
[total_charges] => 5184.4399862289
[total_payment] => 19761.62
)
[1] => stdClass Object
(
[date_payment] => 2017-09-04
[total_charges] => 0
)
)
)
我已经尝试了所有方法,我查看了 Google,查看了 Laravel 文档:https ://laravel.com/docs/5.4/collections#method-union我什么也没做,我尝试了 union/merge 方法,但不要做我想做的事
谢谢你的帮助!
解决方案
假设您有一个名为的集合$payments
:
$payment = new StdClass;
$payment->date_payment = '2018-01-01';
$payment->total_payment = 19761.62;
$payments = collect([
$payment
]);
另一个名为$expenses
:
$expense1 = new StdClass();
$expense1->date_payment = '2018-01-29';
$expense1->total_charges = 5184.4399862289;
$expense2 = new StdClass();
$expense2->date_payment = '2017-09-04';
$expense2->total_charges = 0;
$expenses = collect([
$expense1, $expense2
]);
要检索两个集合中具有相同键的元素,可以使用intersectByKeys
:
$payments->intersectByKeys($expenses);
这将检索与费用集合具有公共键的所有付款。
现在,要更新集合的值,您可以使用以下transform
函数:
$payments->transform(function ($payment, $index) use ($expenses) {
$expense = $expenses->get($index);
$payment->date_payment = $expense->date_payment;
$payment->total_charges = $expense->total_charges;
return $payment;
});
现在,如果将它们结合在一起:
$payments->intersectByKeys($expenses)->transform(function ($payment, $index) use ($expenses) {
$expense = $expenses->get($index);
$payment->date_payment = $expense->date_payment;
$payment->total_charges = $expense->total_charges;
return $payment;
});
输出
Collection {#277 ▼
#items: array:1 [▼
0 => {#272 ▼
+"date_payment": "2018-01-29"
+"total_payment": 19761.62
+"total_charges": 5184.4399862289
}
]
}
了解更多信息:
推荐阅读
- html - 背景模糊效果,在过渡期间创建“插入阴影”问题
- reactjs - 可以用 useMemo 代替 useEffect 来调用副作用函数
- memory-management - 如何在内核启动时找出伙伴分配器分配了每个订单的多少块内存?
- python - 如何在python中阅读单词(docx)?
- c++ - cv::Point3f 的构造函数是如何工作的?
- python - Jupyter Hub:启动器中的致命错误,...系统找不到指定的文件
- mysql - 如何在包含不同数据的相同列的两个不同表上创建视图
- angular - 从多选择角反应形式中删除选定的值
- c# - 在具有不同大小写的 switch-case 块中比较 C# 中的字符串
- javascript - 无法将值从 Google 工作表显示到 Google Web App