xr0m3oz
@xr0m3oz

Как выполнить Mysql Function в ActiveDataProvider (Rest API)?

Как мне можно использовать в Актив Дата провайдеру выполнение пользовательской функции (MYSQL FUNCTION), которая есть в базе данных.

Функция определяет ближайшее место по координаторам. И мне как то нужно вытащить из базы данные и подставить в ту функцию.

Сама функция dist( lat,lon,latitude,longitude)<100

lat,lon - это придет гет параметр
latitude,longitude - это должно браться с базы данных

И мне нужно как то внедрить его в мой код.
Пока даже не знаю с какой стороны с такой задачей подойти.
Спасибо.

class ClientsController extends ActiveController
{
    public $modelClass = 'api\modules\v1\models\Clients';

    public function actions()
    {
        $actions = parent::actions();
        // disable the "delete" and "create" actions
        unset($actions['create'],$actions['view'],$actions['delete'], $actions['update']);

        return array_merge(
            $actions,
            [
                'index' => [
                    'class' => 'yii\rest\IndexAction',
                    'modelClass' => $this->modelClass,
                    'checkAccess' => [$this, 'checkAccess'],
                    'prepareDataProvider' => function ($action) {
                        //---------------------------------
                        /* @var $model ClientsController */
                        $model = $action->modelClass;
                        $query = $model::find();
                        $dataProvider = new ActiveDataProvider(['query' => $query]);
                        $query->andFIlterWhere([
                            'country_id' => @$_GET['country_id'],
                            'state_id' => @$_GET['state_id'],
                            'city_id' => @$_GET['city_id'],
                        ]);
                        return $dataProvider;
                        //---------------------------------

                    }
                ]
            ]
        );
    }
}
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 1
restyler
@restyler
$query->andWhere("dist(:lat,:lon, latitude,longitude)>100", [':lat' => $_GET['lan'], ':lon' => $_GET['lon']])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы