Cakephp слияние специальных полей с текущим списком полей - PullRequest
0 голосов
/ 20 октября 2011

У меня ниже запрос в модели:

$params = array(
                    'fields' => array('User.id','User.username', 'User.lat', 'User.lng', 'User.thumbnail_image', 'User.status', 
                    "6371 * ACos( Cos( RADIANS( User.lat ) ) * Cos( RADIANS( $lat ) ) * Cos( RADIANS( $lng ) - RADIANS( User.lng ) ) + Sin( RADIANS( User.lat ) ) * Sin( RADIANS( $lat ) ) ) AS distance"),

                    'recursive' => 1,
                    'limit' => 15,
                    'offset' => $offset,
                    //'conditions' => array('Friend.user_id' => $user_id, 'Interest.interest' => $interest, 'Favourite.favourite' => $favourite),
                    //'order' => array($order)
                    );

        $find = $this->find('all',$params);

        return $find;

Выше генерируется что-то вроде ниже:

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 2
                    [username] => hybmg571
                    [lat] => 12
                    [lng] => 22
                    [thumbnail_image] => 
                    [status] => 0
                )

            [0] => Array
                (
                    [distance] => 1083.10516386871
                )

Я хочу включить это расстояние в массив User.Есть ли способ, которым мы можем включить расстояние в ключ пользователя?

1 Ответ

2 голосов
/ 20 октября 2011

Используйте виртуальное поле .

$this->virtualFields = array(    
    'distance' => "6371 * ACos( Cos( RADIANS( User.lat ) ) * Cos( RADIANS( $lat ) ) * Cos( RADIANS( $lng ) - RADIANS( User.lng ) ) + Sin( RADIANS( User.lat ) ) * Sin( RADIANS( $lat ) ) )"
);

(или, если модель уже имеет виртуальные поля, $this->virtualFields[ 'distance' ] = "...")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...