如何在Cake PHP 3的geo_locations之间找到get_distance_in_miles

时间:2018-07-23 07:01:28

标签: php cakephp cakephp-3.0

如何在cakephp 3的get_distance_in_miles之间找到geo_locations

通过使用类似cake php 2的字段,而不是通过核心php查询。通过这种方法

$data = $this->Restaurant->find('all', array(
                    "fields" => array("get_distance_in_miles_between_geo_locations($lat,$long,Restaurant.latitude,Restaurant.longitude) as distance", "Restaurant.*,RestaurantsType.*"),
                    "ORDER BY" => 'DESC',
                ));

1 个答案:

答案 0 :(得分:1)

您的问题不是很清楚,您的代码会在cake2中引发错误

无论如何,我想您有一个用户定义的函数,并且想使用它。在cake3中执行此操作的方法是:

或者您最好使用Cake SQL函数

 $query = $this->Restaurants->find();
 $query->select([
      'distance' => $query->func()->get_distance_in_miles_between_geo_locations([
          $lat,
          $long,
          'Restaurants.latitude' => 'identifier',
          'Restaurants.longitude' => 'identifier'     
      ])
])

请注意,我已将Restaurant更改为Restaurants,并将RestaurantsType更改为RestaurantsTypes,以遵循蛋糕3的命名约定