Mysql
 sql >> база данни >  >> RDS >> Mysql

CakePHP заявка най-близката географска ширина и дължина от базата данни

няма повече виртуални полета в торта 3, но все пак можете да създадете псевдоним за вашето изчислено поле

Както е предложено от @ndm, по-добре е да свържете $latitude и $longitude за предотвратяване на SQL инжекции

$distanceField = '(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()
    ->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']);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Попълване на база данни без командата load data

  2. Неволи на MariaDB 10 CentOS 7 при преместване на datadir

  3. Възможно ли е да се ускори sum() в MySQL?

  4. Как да изберете най-старата дата от MySQL

  5. Mac OS Sierra virtualenv (python 2.7) pip install mysqlclient грешка