问题描述
我正在开发一种独特的基于群组的购物车系统,其工作方式与传统的购物车系统不同。对于购物车,我得到包含 group_id
的行。我想按 group_id
对所有订单进行分组并处理其数据以计算动态定价、商品总数、折扣等。
我想显示的数据供管理员使用 datatables
使用。所以我
无法使用 group_id
过滤器运行查询。我必须显示所有
为管理员分组数据。
查询结果如下。
查询结果
Array
(
[0] => stdClass Object
(
[id] => 14
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 297
[product_option] => 0
[qty] => 3
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Roma Patel","email":"roma@pad.com","qty":"1"},{"name":"Manoj Bajpai","email":"manoj@skdf.com","qty":"2"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:39:13
)
[1] => stdClass Object
(
[id] => 15
[order_number] => 2020111618475
[group_order_number] => 1605498753184
[product] => 174
[product_option] => 0
[qty] => 1
[group_id] => 184
[group_admin] => 71
[group_user] => 75
[customers] => [{"name":"loveena","email":"love@sdklf.com","qty":1}]
[identifier] => FqPeYG6L2FVMQFGM_990314138546b9b5ce73df287919ca0a
[added_at] => 2020-11-16 07:52:33
)
[2] => stdClass Object
(
[id] => 16
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 168
[product_option] => 0
[qty] => 1
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Roma Patel","qty":1}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-15 12:18:23
)
[3] => stdClass Object
(
[id] => 17
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 64
[product_option] => 0
[qty] => 2
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Rinku Patani","email":"rinku@patani.com","qty":"2"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-22 12:27:46
)
[4] => stdClass Object
(
[id] => 18
[order_number] => 2020111629873
[group_order_number] => 1605497369298
[product] => 64
[product_option] => 0
[qty] => 1
[group_id] => 298
[group_admin] => 72
[group_user] => 73
[customers] => [{"name":"Vijay Sonar","email":"vson@aksd.com","qty":"1"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-24 10:51:00
)
[5] => stdClass Object
(
[id] => 19
[order_number] => 2020111618475
[group_order_number] => 1605498753184
[product] => 102
[product_option] => 0
[qty] => 1
[group_id] => 184
[group_admin] => 71
[group_user] => 75
[customers] => [{"name":"Rima Lagu","email":"rima@lagosd.com","qty":1}]
[identifier] => FqPeYG6L2FVMQFGM_990314138546b9b5ce73df287919ca0a
[added_at] => 2020-12-24 13:01:14
)
[6] => stdClass Object
(
[id] => 20
[order_number] => 2020111629873
[group_order_number] => 1605497369298
[product] => 146
[product_option] => 0
[qty] => 2
[group_id] => 298
[group_admin] => 72
[group_user] => 73
[customers] => [{"name":"Ramesh Oza","email":"ramesh@amdf.com","qty":"2"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:01:44
)
[7] => stdClass Object
(
[id] => 21
[order_number] => 2020111629873
[group_order_number] => 1605497369298
[product] => 297
[product_option] => 1
[qty] => 3
[group_id] => 298
[group_admin] => 72
[group_user] => 73
[customers] => [{"name":"Aniketh Vora","email":"aniket@sdfk.com","qty":"3"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:31:55
)
[8] => stdClass Object
(
[id] => 23
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 146
[product_option] => 0
[qty] => 3
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Roma Patel","qty":1},{"name":"vijay sonar","email":"vso@lkd.com","qty":2}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:48:33
)
[9] => stdClass Object
(
[id] => 24
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 297
[product_option] => 1
[qty] => 2
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name": "Harprit Sing","email": "harpr@sfk.co","qty": 1},{"name": "Roma Patel","email": "roma@pad.com","qty": 1}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:56:34
)
)
我根据 group_id
对所有项目进行了分组,如下所示。
按组 ID 分组的项目
Array
(
[products] => Array
(
[298] => Array
(
[0] => stdClass Object
(
[id] => 14
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 297
[product_option] => 0
[qty] => 3
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Roma Patel","qty":"2"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:39:13
)
[1] => stdClass Object
(
[id] => 16
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 168
[product_option] => 0
[qty] => 1
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Roma Patel","qty":1}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-15 12:18:23
)
[2] => stdClass Object
(
[id] => 17
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 64
[product_option] => 0
[qty] => 2
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Rinku Patani","qty":"2"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-22 12:27:46
)
[3] => stdClass Object
(
[id] => 18
[order_number] => 2020111629873
[group_order_number] => 1605497369298
[product] => 64
[product_option] => 0
[qty] => 1
[group_id] => 298
[group_admin] => 72
[group_user] => 73
[customers] => [{"name":"Vijay Sonar","qty":"1"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-24 10:51:00
)
[4] => stdClass Object
(
[id] => 20
[order_number] => 2020111629873
[group_order_number] => 1605497369298
[product] => 146
[product_option] => 0
[qty] => 2
[group_id] => 298
[group_admin] => 72
[group_user] => 73
[customers] => [{"name":"Ramesh Oza","qty":"2"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:01:44
)
[5] => stdClass Object
(
[id] => 21
[order_number] => 2020111629873
[group_order_number] => 1605497369298
[product] => 297
[product_option] => 1
[qty] => 3
[group_id] => 298
[group_admin] => 72
[group_user] => 73
[customers] => [{"name":"Aniketh Vora","qty":"3"}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:31:55
)
[6] => stdClass Object
(
[id] => 23
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 146
[product_option] => 0
[qty] => 3
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name":"Roma Patel","qty":2}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:48:33
)
[7] => stdClass Object
(
[id] => 24
[order_number] => 2020111629863
[group_order_number] => 1605497369298
[product] => 297
[product_option] => 1
[qty] => 2
[group_id] => 298
[group_admin] => 72
[group_user] => 63
[customers] => [{"name": "Harprit Sing","qty": 1}]
[identifier] => AtR4deAVgU4Ensi1_1ac2b33a4df7c5f0cf148d6232074352
[added_at] => 2020-12-26 10:56:34
)
)
[184] => Array
(
[0] => stdClass Object
(
[id] => 15
[order_number] => 2020111618475
[group_order_number] => 1605498753184
[product] => 174
[product_option] => 0
[qty] => 1
[group_id] => 184
[group_admin] => 71
[group_user] => 75
[customers] => [{"name":"loveena","qty":1}]
[identifier] => FqPeYG6L2FVMQFGM_990314138546b9b5ce73df287919ca0a
[added_at] => 2020-11-16 07:52:33
)
[1] => stdClass Object
(
[id] => 19
[order_number] => 2020111618475
[group_order_number] => 1605498753184
[product] => 102
[product_option] => 0
[qty] => 1
[group_id] => 184
[group_admin] => 71
[group_user] => 75
[customers] => [{"name":"Rima Lagu","qty":1}]
[identifier] => FqPeYG6L2FVMQFGM_990314138546b9b5ce73df287919ca0a
[added_at] => 2020-12-24 13:01:14
)
)
)
)
问题
我必须为每个组做各种计算和处理数据。例如,通过计算该组的每个订单(行)来计算该组的总产品数——该组的总折扣。
所以在这里,我想知道如何分别处理每个组(索引)。就像我为分组数组运行 for-each 循环一样,它一次遍历所有组。并且不会得到正确的总和。
例如,计算组 298,184,...
的产品总数,依此类推。我已将所有方法设置为使用数组中的所有 id 进行计算。
如果您需要更多详细信息或信息,请告诉我。
更新信息
数据库表
数据表列
最终结果将显示在下面的数据表中。每组一行。
解决方法
我不确定这是否是您想要的,正如@HTMHell 所建议的那样,这种操作在数据库上速度更快。
<?php
foreach ($result as $id => $group)
{
$sum = 0;
foreach ($group as $row)
{
$sum += $row['qty']
}
echo "group $id total qty: $sum";
}