久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

CakePHP 從數據庫查詢最近緯度經度

CakePHP query closest latitude longitude from database(CakePHP 從數據庫查詢最近緯度經度)
本文介紹了CakePHP 從數據庫查詢最近緯度經度的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在 CakePHP (v3) 應用程序中,如何根據傳遞的 lat lng 值檢索最接近的結果?

In a CakePHP (v3) application, how can I retrieve the closest results based on passed lat lng values?

我想讓它們作為本地 CakePHP 實體返回,所以是這樣的:

I'd like to have them back as native CakePHP entities, so something like this:

public function closest($lat, $lng) {

    $sightings = //records within given lat lng 

    $this->set(compact('sightings'));
    $this->set('_serialize', ['sightings']);
}

我知道這個 SQL 有效:

I know this SQL works:

SELECT *,
       ( 3959 * acos( cos( radians(50.7) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-1.8) ) + sin( radians(50.7) ) * sin( radians( latitude ) ) ) ) AS distance
  FROM sightings
HAVING distance < 10
 ORDER BY distance
 LIMIT 0 , 20

努力將兩者結合起來.

更新

我已經添加了

class Sighting extends Entity {
    public $_virtual = ['distance'];
    //rest of class...
}

所以現在 distance 出現在我的 json 輸出中(現在預期值為 null,但我覺得這至少是一個步驟).

So now the distance is showing up in my json output (with the value of null as would be expected right now, but I feel it's a step at lease).

我看過這里:http://www.mrthun.com/2014/11/26/search-distance-cakephp/ 這似乎是我想要實現的,所以假設是這樣的:

I've taken a look here: http://www.mrthun.com/2014/11/26/search-distance-cakephp/ which seems to be what I'm trying to achieve so assumed something like this:

$latitude = 51.145;
$longitude = -1.45;
$distance = 100;

$this->Sightings->virtualFields
    = array('Sightings.distance'
     => '(3959 * acos (cos ( radians('.$latitude.') )
    * cos( radians( Sightings.latitude ) )
    * cos( radians( Sightings.longitude )
    - radians('.$longitude.') )
    + sin ( radians('.$latitude.') )
    * sin( radians( Sightings.latitude ) )))');

$sightings = $this->Sightings->find('all', [
    'conditions' => ['Sightings.distance <' => $distance]
]);

$this->set(compact('sightings'));
$this->set('_serialize', ['sightings']);

結果:Column not found: 1054 Unknown column 'Sightings.distance' in 'where子句'

不確定是否可以使用 CakePHP v2 而不是 v3?

Not sure if it's possible CakePHP v2 as opposed to v3?

推薦答案

cake 3 中不再有 virtualFields,但您仍然可以為計算字段創建別名

there are no more virtualFields in cake 3 but you still can create an alias for your calculated field

按照@ndm 的建議,您最好綁定 $latitude$longitude 以防止 SQL 注入

As suggested by @ndm you'd better bind $latitude and $longitude to prevent SQL injections

$distanceField = '(3959 * acos (cos ( radians(:latitude) )
    * cos( radians( Sightings.latitude ) )
    * cos( radians( Sightings.longitude )
    - radians(:longitude) )
    + sin ( radians(:latitude) )
    * sin( radians( Sightings.latitude ) )))';

使用where

$sightings = $this->Sightings->find()
    ->select([
        'distance' => $distanceField
    ])
    ->where(["$distanceField < " => $distance])
    ->bind(':latitude', $latitude, 'float')
    ->bind(':longitude', $longitude, 'float')
    ->contain(['Photos', 'Tags']);

使用擁有

$sightings = $this->Sightings->find()
    ->select([
        'distance' => $distanceField
    ])
    ->having(['distance < ' => $distance])
    ->bind(':latitude', $latitude, 'float')
    ->bind(':longitude', $longitude, 'float')
    ->contain(['Photos', 'Tags']);

這篇關于CakePHP 從數據庫查詢最近緯度經度的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Cannot use #39;Object as class name as it is reserved Cake 2.2.x(不能使用 Object 作為類名,因為它是保留的 Cake 2.2.x)
Session is lost after an OAuth redirect(OAuth 重定向后會話丟失)
Pagination Sort in Cakephp 3.x(Cakephp 3.x 中的分頁排序)
CakePHP Shared core for multiple apps(CakePHP 多個應用程序的共享核心)
Login [ Auth-gt;identify() ] always false on CakePHP 3(在 CakePHP 3 上登錄 [ Auth-identify() ] 始終為 false)
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 87 bytes)(致命錯誤:允許的內存大小為 134217728 字節已用盡(嘗試分配 87 字節))
主站蜘蛛池模板: caoporn国产精品免费公开 | 欧洲妇女成人淫片aaa视频 | 天堂色 | 超碰成人av | 成人av免费在线观看 | 国产目拍亚洲精品99久久精品 | 欧美黄色网 | 亚洲高清免费观看 | 国产精品成人一区二区三区 | 久久久国产一区 | 日本不卡一区二区三区在线观看 | 日韩欧美一级精品久久 | 国产成人精品一区二区三区在线 | 日一区二区三区 | 成人超碰 | 在线观看黄色大片 | 欧美无乱码久久久免费午夜一区 | 欧美精品区 | 成人在线视频网 | 欧美亚洲国产日韩 | 国产视频观看 | 日韩成人在线视频 | 亚洲人在线 | 日本韩国电影免费观看 | 久久y| 国产成人免费在线 | 欧美日韩综合 | 久久国产精品免费一区二区三区 | 国产精品影视在线观看 | 国产精品99久久久久久久久久久久 | 欧美一区二区三区四区视频 | 日韩精品一区二区三区久久 | 91色综合 | 视频一区二区中文字幕日韩 | 国产成人精品福利 | 亚洲不卡av在线 | 国产精品久久久亚洲 | 欧美一级片久久 | 91精品久久久久久久久中文字幕 | 成人免费在线观看视频 | 欧美激情在线观看一区二区三区 |