【发布时间】:2016-10-29 07:50:45
【问题描述】:
查询:
SELECT t1.`id`, t1.`year` as service_year, t5.`month` as service_month, t6.id as country_id, t6.`country`, t7.`id` as mobile_operator_id, t7.`mobile_operator`, t1.`service_id`, t1.`gross_revenue_actual`, t1.`content_partner_share`
, t2.`service`
, t4.`collected_at`, t4.`id` as invoice_id
FROM `PaymentCollections` t1
JOIN `Services` t2 ON t1.`service_id` = t2.`id`
JOIN `PaymentCollectionInvoiceItems` t3 ON t3.`payment_collection_id` = t1.`id`
JOIN `PaymentCollectionInvoices` t4 ON t4.`id` = t3.`invoice_id`
JOIN `Months` t5 ON t5.`id` = t1.`month`
JOIN `Countries` t6 ON t6.`id` = t2.`country_id`
JOIN `MobileOperators` t7 ON t7.`id` = t2.`mobile_operator_id`
WHERE t1.`payment_collection_status_id` = 18
GROUP BY t1.`year`, t1.`month` ORDER BY t1.`year` DESC, t1.`month` ASC
当我在典型查询之上运行时,发现了一个数组:
[0] => stdClass Object
(
[id] => 5132
[service_year] => 2016
[service_month] => April
[country_id] => 116
[country] => Kenya
[mobile_operator_id] => 3
[mobile_operator] => Airtel
[service_id] => 16
[gross_revenue_actual] => 11500.000000
[content_partner_share] => 1000.000000
[service] => Christianity Portal
[collected_at] => 2016-06-24 09:59:19
[invoice_id] => 105
)
[1] => stdClass Object
(
[id] => 4982
[service_year] => 2016
[service_month] => May
[country_id] => 116
[country] => Kenya
[mobile_operator_id] => 3
[mobile_operator] => Airtel
[service_id] => 16
[gross_revenue_actual] => 11500.000000
[content_partner_share] => 1000.000000
[service] => Christianity Portal
[collected_at] => 2016-06-24 10:02:21
[invoice_id] => 106
)
[2] => stdClass Object
(
[id] => 4732
[service_year] => 2016
[service_month] => June
[country_id] => 116
[country] => Kenya
[mobile_operator_id] => 3
[mobile_operator] => Airtel
[service_id] => 16
[gross_revenue_actual] => 11000.000000
[content_partner_share] => 1000.000000
[service] => Christianity Portal
[collected_at] => 2016-06-24 13:13:42
[invoice_id] => 114
)
[3] => stdClass Object
(
[id] => 5522
[service_year] => 2015
[service_month] => December
[country_id] => 51
[country] => Congo(Republic of)
[mobile_operator_id] => 31
[mobile_operator] => MTN
[service_id] => 56
[gross_revenue_actual] => 11500.000000
[content_partner_share] => 1000.000000
[service] => Music On Demand
[collected_at] => 2016-06-24 11:26:09
[invoice_id] => 101
)
通过使用上述数组,如果service_year、country、mobile_operator、service 相同但月份不同,那么我想创建如下所示的新数组
$finalarray = {
0 = {
[id] => 4732,
[service_year] => 2016,
[service] => Christianity Portal,
[country] => Kenya,
[mobile_operator] => Airtel,
array{
array[April] {
[gross_revenue_actual] => 11500.000000
[content_partner_share] => 1000.000000
[collected_at] => 2016-06-24 10:02:21
},
array[May] {
[gross_revenue_actual] => 11000.000000
[content_partner_share] => 1000.000000
[collected_at] => 2016-06-24 13:13:42
},
array[June] {
[gross_revenue_actual] => 11000.000000
[content_partner_share] => 1000.000000
[collected_at] => 2016-06-24 13:13:42
},
}
}
1 = {
[id] => 5522
[service_year] => 2015
[service_month] => December
[country_id] => 51
[country] => Congo(Republic of)
[mobile_operator_id] => 31
[mobile_operator] => MTN
[service_id] => 56
[gross_revenue_actual] => 11500.000000
[content_partner_share] => 1000.000000
[service] => Music On Demand
[collected_at] => 2016-06-24 11:26:09
[invoice_id] => 101
}
}
当我使用 Laravel 5 框架时,我该怎么做?是否可以修改我的查询以获得这种类型的数组?
感谢所有提示和回复。先谢谢了。
【问题讨论】:
-
问题似乎是关于编写 SQL 查询。所以,我希望你先在 SQL 社区问这个问题。据我所知,您需要在 SQL 查询中使用 GROUP BY 子句对月份、年份、服务或任何您想要的内容进行分组。仅根据查询结果,您需要决定是否要在 PHP 中实现查询。
-
感谢您的建议,我在这里通过编辑我的问题添加查询。
-
我猜你需要从返回的数组中删除 Stdclass 对象吗?
-
删除 Stdclass 会发生什么?
-
我在问你是否需要输出为没有 stdclass 对象的数组