php - 将 Mysql 查询转换为 cakephp 条件

标签 php mysql arrays cakephp

我想将此查询转换为 cakephp

SELECT l.* , (
                (
                (
                ACOS( SIN( (
                $lat * PI( ) /180 ) ) * SIN( (
                l.lat * PI( ) /180 )
                ) + COS( (
                $lat * PI( ) /180 )
                ) * COS( (
                l.lat * PI( ) /180 )
                ) * COS( (
                ( $lng  -  l.long ) * PI( ) /180 )
                )
                )
                ) *180 / PI( )
                ) *60 * 1.1515 * 1.609344
                ) AS  `distance` 
                FROM  hosts l 
                HAVING  `distance` <= 50
                ORDER BY  `distance` ASC

请帮帮我...... 如果我可以在 contiions 数组中添加它会更有帮助,比如

$this->paginate = array('conditions' => $conditions , 
                                        'order' => array('Host.distance' => 'ASC')
                                    );

最佳答案

您可以尝试在调用 Model::find: 之前重新定义虚拟字段

// Controller code

$this->Note->virtualFields = array(
    'distance' => "( 3959 * acos( cos( radians($lat) ) * cos( radians( Note.latitude ) ) * cos( radians( Note.longitude ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( Note.latitude ) ) ) )"
);
$data = $this->Note->find('all', array('fields' => array('distance'), 'conditions' => array('distance <' => 1)));

如果可行,您可能希望创建一个模型方法来执行此操作

你也可以用分页来做到这一点。

关于php - 将 Mysql 查询转换为 cakephp 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18442828/

相关文章:

php - 如何从自定义 MySQL 获取函数中检索 1 个结果

php - codeigniter 显示 (my)sql 插入警告

mysql - 在 1 列中选择具有多个 AND/OR/IN 条件的用户

php - 使用一项 Web 服务 iOS 执行多个 MySQL 查询

javascript - 在 React/Redux 中在屏幕上一一显示内容

arrays - kql - 如何从字符串数组中删除所有空字符串?

c++ - 如何在 C 或 C++ 中创建动态堆栈的动态数组

php - 使用 openssl 命令解密 php 服务器上的文件

php - 如何在PHP中分别求和二维数组的值

mysql - 根据 MySql 中的两个条件在单列中获取计数的更好方法