On Sun, Feb 8, 2009 at 10:47 AM, Alfredo Quiroga-Villamil
<[email protected]> wrote:
>
> I have the following query:
>
> ===============================================
>            $aParams = array(
>                'fields' => array(
>                    "ifnull(CcCall.destination, 'Total')    as destination"
>                    ,'sec_to_time(sum(CcCall.sessiontime))  as duration'
>                    ,'truncate(sum(CcCall.sessionbill), 2)  as charged'
>                )
>                ,'conditions' => $aConditions
>                ,'group' => 'CcCall.destination with rollup'
>                ,'limit' => 1
>            );
>
> $aDestinationSummary = $this->CcCall->find('all', $aParams);
> ===============================================
>
> which returns data as follows:
>
> ===============================================
> 2009-02-07 23:52:19 Debug: Array
> (
>    [0] => Array
>        (
>            [0] => Array
>                (
>                    [destination] => algeria cellular algerie telecom
>                    [duration] => 00:01:30
>                    [charged] => 0.51
>                )
>
>        )
>
> )
> ===============================================
>
> Typically I would use Set::extract to extract the data I want and
> format it to json to be rendered by the view. However, in this
> particular case, the data is returned in such a way that doesn't at
> least at first glance allow me to use Set::extract.
>
> Questions:
>
> 1- Is there a way to format the query above in such a way that returns
> the Model Name as the sub-index for the arrays, hence allowing me to
> use Set::extract?

Cake can't know the model name here because of the use of DB
functions, hence the 2nd 0 key. The first key is the results index,
and so corresponds to Set's '{n}'. The 2nd key will always be 0. So,
for example, to extract destination you just need to do:

Set::extract($results, '{n}.0.destination');


> 2- If 1 is not possible or even if it is, Do we hae a way to just get
> the elements containing data from the array. For instance, something
> like the following:
>
> $aDestSummary = Set::extract($aDestinationSummary, '{n}');
>

I'm not sure what you mean by that, based on the example result you
posted. Perhaps you want an inner join?

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to