Database query for getting the closest destinations in Drupal 8 2016-07-22 Drupal 8, database, mysql 123456789101112131415161718192021222324252627282930313233<?php // Database service. It's better to use dependency injection in your class. $database = \Drupal::service('database'); $earth_radius = 3959; // Coordinates of the place from which you would like to get nearest places. $lat = '52.486081'; $lon = '13.404616'; // How many nearest places we would like to show? $limit = 10; // Radius to search. $radius = 100; $query = $database->select('my_table_name_from_db', 'destination'); $query->fields('destination'); $query->orderBy('distance'); $query->range(0, $limit); // field_latitude and field_longitude - columns names from 'my_table_name_from_db' // where coordinates stored. $expr = "( $earth_radius * acos( cos(radians(:lat)) * cos(radians(field_latitude)) * cos(radians(field_longitude) - radians(:lon)) + sin(radians(:lat)) * sin(radians(field_latitude)) ) )"; $query->addExpression($expr, 'distance', array(':lat' => $lat, ':lon' => $lon)); $query->having('distance <= :radius', array(':radius' => $radius)); $destinations = $query->execute()->fetchAll(); Older Work with database in Drupal 8