I would start the find on Postcode and contain the User

Would do a $locations = find('all' ….)  as its easier to debug($locations) , 
once thats working correctly then change it to paginate...

try order :    'order' => 'distance ASC'

Andras Kende

On Jan 29, 2012, at 3:35 PM, Daniel wrote:

> I am trying to sort some query results using a distance field which is
> calculated from longitude and latitude fields as follows:
> 
> $this->paginate = array(
>       'User' => array(
>               'recursive' => -1,
>               'limit' => 10,
>               'conditions' => $this->User->parseCriteria($this->passedArgs),
>               'contain' => array(
>                       'Postcode' => array(
>                               'fields' => array(
>                                       'latitude',
>                                       'longitude',
>                                       
> '(3963.0*ACOS(SIN('.$lat.'*PI()/180)*SIN(latitude*PI()/180)+COS('.
> $lat.'*PI()/180)*
>                                       
> COS(latitude*PI()/180)*COS((longitude*PI()/180)-('.$lon.'*PI()/
> 180))
>                                       )) AS distance'
>                               )
>                       )
>               ),
>               'order' => array('distance' => 'asc'),
>       )
> );
> 
> "latitude" and "longitude" are fields on the Postcodes table.  $lon
> and $lat are variables.  The problem is that the order by clause is
> ignored, it does not appear on the SQL outputted in the debugger.
> Also if I try and output the 'distance' field in the view using either
> $user['User']['distance'] or $user['Postcode']['distance'] or
> $user['distance'] I get an error:
> 
> Undefined index: distance [APP\View\Users\search.ctp, line 30]
> 
> Any ideas as how to solve this, a different approach perhaps?
> 
> Thanks.
> 
> -- 
> Our newest site for the community: CakePHP Video Tutorials 
> http://tv.cakephp.org 
> Check out the new CakePHP Questions site http://ask.cakephp.org and help 
> others with their CakePHP related questions.
> 
> 
> To unsubscribe from this group, send email to
> [email protected] For more options, visit this group at 
> http://groups.google.com/group/cake-php

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to