Cakephp特殊字段与当前字段列表合并

发布于 2024-12-11 06:43:24 字数 1370 浏览 1 评论 0原文

我在模型中有以下查询:

$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
                )

我想要的是将这个距离与用户数组合并。 有没有办法将距离合并到用户密钥中?

I have below query in model:

$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;

Above generates something like below:

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

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

What I want is to incorporate this distance with User array.
Is there a way we can incorporate distance into User key?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亢潮 2024-12-18 06:43:24

使用虚拟字段

$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' ] = "..."

Use a virtual field.

$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 ) ) )"
);

(or if the model already has virtual fields, $this->virtualFields[ 'distance' ] = "...")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文