我喜欢CakePHP如何自动遍历MySQL查询的结果并将它们格式化为漂亮的地图。
以下是我正在使用的示例查询:
# Inside some model
return $this->query("
SELECT
Profile.id,
SUM( IF( HOUR(Log.event_one) > 3, 1, 0 ) ) as EventOne
FROM profiles Profile
JOIN logs Log ON Log.id = Profile.log_id
WHERE Profile.id = {$pUserId}
");
CakePHP将返回如下结果的地图:
array
0
array
'Profile'
array
'id' => 23
'0'
array
'EventOne' => 108
1
array
'Profile'
array
'id' => 23
'0'
array
'EventOne' => 42
2
...
我要做的是让结果像这样:
array
'Profile'
array
'id' => 23
'Events'
# ^ I want to be able to specify this key
array
'EventOne' => 108
有什么想法吗?
答案 0 :(得分:0)
顶级数组键是从mysql表示该字段所涉及的表名派生的 - 在您的情况下,它是一个计算字段,因此(根据mysql)属于无表 - 因此是0数组键。
然而,你可以做的是对结果进行后处理,使其成为你想要的格式:
public function getStuff() {
// The query call in the question can very easily be a normal find call
$return = $this->query("don't use query unless you have no choice");
foreach($return as &$row) {
$row['Events'] = $row[0];
unset($row[0]);
}
return $return;
}