Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie CakePHP o najbliższą szerokość geograficzną z bazy danych

nie ma już wirtualnych pól w ciastku 3, ale nadal możesz utworzyć alias dla swojego pola obliczeniowego

Jak sugeruje @ndm, lepiej powiąż $latitude i $longitude aby zapobiec wstrzykiwaniu SQL

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

używając gdzie

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

korzystanie z posiadania

$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. Aktualizacja wielu kolumn tabeli MySQL przy użyciu tablic z PDO

  2. Zarządzanie różnicami w formatach dat między PHP i MySQL

  3. Jak napisać procedurę składowaną za pomocą phpmyadmina i jak z niej korzystać za pośrednictwem php?

  4. Przykłady instrukcji JDBC — wstaw, usuń, zaktualizuj, wybierz rekord

  5. Grupuj według Union mysql select query