As an aside, you can also use the find('first' ...) method rather than
find('all', ...) like you did, since you limit the result to one in
your query anyway. Not much different, they both achieve the same
thing, but it may be more readable in the code itself.
On Feb 8, 5:06 pm, Alfredo Quiroga-Villamil <[email protected]> wrote:
> I really appreciate it guys, for some reason I didn't try this:
>
> Set::extract($aDestinationSummary, '{n}.0');
>
> That extracts exactly the set I want, I knew there had to be a simple,
> clean way to get it but didn't try that for some reason.
>
> Thanks so much for the help.
>
> Alfredo
>
>
>
> On Sun, Feb 8, 2009 at 2:32 PM, brian <[email protected]> wrote:
>
> > 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?- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---