【发布时间】:2020-12-28 08:06:52
【问题描述】:
我正在开发一种独特的基于群组的购物车系统,该系统的工作方式与传统购物车系统不同。对于购物车,我得到包含 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","email":"roma@pad.com","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","email":"roma@pad.com","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","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] => 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","email":"roma@pad.com","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","email":"rinku@patani.com","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","email":"vson@aksd.com","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","email":"ramesh@amdf.com","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","email":"aniket@sdfk.com","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","email":"roma@pad.com","qty":1},{"name":"vijay sonar","email":"vso@lkd.com","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", "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
)
)
[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","email":"love@sdklf.com","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","email":"rima@lagosd.com","qty":1}]
[identifier] => FqPeYG6L2FVMQFGM_990314138546b9b5ce73df287919ca0a
[added_at] => 2020-12-24 13:01:14
)
)
)
)
问题
我必须为每个组进行各种计算和处理数据。例如,通过计算该组的每个订单(行)来计算该组的总产品数——该组的总折扣。
所以在这里,我想知道如何分别处理每个组(索引)。就好像我为分组数组运行 for-each 循环一样,它一次运行所有组。并且不会得到正确的总和。
例如,计算群组298, 184, ... 的产品总数,以此类推。我已将所有方法设置为使用数组中的所有 id 进行计算。
如果您需要更多详细信息或信息,请告诉我。
更新信息
数据库表
数据表列
【问题讨论】:
-
如果您通过查询获取所有行,只需在迭代期间进行这些计算。如果没有,例如您有分页,请使用
GROUP BY的附加查询 -
代替 foreach ($result as $group) 使用 foreach ($result['product'] as $group
-
@HTMHell 我想要整个组的总数。不适用于单个行。例如,如果组 id 298 有三个订单,我需要获取同一组的三个订单的总项目数。折扣、总金额等相同。如何计算和分离每个组的结果?因为
datatables每行将是一组总数据。 -
@m47730
products键是我手动添加的。我有更多数据将分配给另一个(兄弟)键。 -
你的意图不够清楚。向我们展示一个最小的数据库数据示例,以及您希望它如何显示(包括所有总和)