Friday, January 13, 2012

Format MySQL Select into Associative Array in CakePHP


I like how CakePHP automatically loops through the results of MySQL queries and formats them in a nice map for you.



Here's a sample query that I'm using:




# 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 would return a map like the following as the result:




array
0
array
'Profile'
array
'id' => 23
'0'
array
'EventOne' => 108
1
array
'Profile'
array
'id' => 23
'0'
array
'EventOne' => 42
2
...



What I'm trying to do is have the result be something like this:




array
'Profile'
array
'id' => 23

'Events'
# ^ I want to be able to specify this key
array
'EventOne' => 108



Any ideas?

No comments:

Post a Comment