0

私のアプリでは、郵便番号による距離検索を統合したいと考えています。

$result['zipcode'] = $this->Locations->find('all', array('conditions' => array('plz' => $param)));
if (count($city['Plz']) > 1)
    $result['city'] = $this->Locations->find('all', array('conditions' => array('ort' => $city['Stadt']['name'], 'plz !=' => $city['Plz']['zipcode'])));
    $this->Locations->virtualFields['distance'] = 'ACOS(SIN(RADIANS(Locations.lat)) * SIN(RADIANS('.$city["Stadt"]["lat"].')) + COS(RADIANS(Locations.lat)) * COS(RADIANS('.$city["Stadt"]["lat"].')) * COS(RADIANS(Locations.lng) - RADIANS('.$city["Stadt"]["lng"].')) ) * 6380';
    $result['near'] = $this->Locations->find('all', array(
        'conditions' => array(
            'plz !=' => $param,
            'ort !=' => $city['Stadt']['name'],
        ),
        'order' => 'distance ASC'
    ));

結果を郵便番号順、市区町村(市区町村に郵便番号が多い場合)、近辺順で表示したいので、このようにしました。しかし今、ケーキのページネーションによってこの結果をページネーションしたいと思います。これらのクエリを 1 つ取得することは可能ですか?

$this->Locations->find('all', array('conditions' => array(
    'order' => 'RESULTS BY ZIPCODE, RESULTS BY CITY, RESULTS BY MISSMATCH ORDERED BY DISTANCE'
)));

この問題をどのように解決しますか?

M.

4

1 に答える 1

0

CakePHP では、連想配列を介してソートする複数のフィールドを指定できます。

$this->MyModel->find('all', array(
    'conditions' => array(/* .... */),
    'order' => array(
        'MyModel.field1' => 'asc',
        'MyModel.field2' => 'desc',
        'MyModel.field3' => 'asc',
    )
);
于 2013-05-03T15:53:24.510 に答える