sql >> Database >  >> RDS >> Mysql

CakePHP-query dichtstbijzijnde breedtegraad lengte uit database

er zijn geen virtualFields meer in cake 3, maar u kunt nog steeds een alias maken voor uw berekende veld

Zoals voorgesteld door @ndm kun je beter $latitude bind binden en $longitude om SQL-injecties te voorkomen

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

waar gebruiken

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

met behulp van

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


  1. twee vreemde sleutels, hoe in kaart te brengen met laravel welsprekend

  2. MySQL Ubuntu 14.04 LTS volledig verwijderen

  3. Hoe tekst tussen 2 tekens te verwijderen met behulp van een query in MYSQL

  4. Een web-app maken vanaf nul met Python Flask en MySQL:deel 2