PHPのPhalcon Frameworkを利用して、以下クエリを実行しようとしていますが、
Syntax error, unexpected token (, near to 'SELECT ST_MakePoint(xxx.xxxxxx, xxx.xxxxxx)::geography AS p) AS f WHERE type = :type: AND ST_DWithin(p, point, :distance:) ORDER BY distance ', when parsing: SELECT id, type, name, ST_X(point) as lng, ST_Y(point) as lat, ST_Distance(p, point) AS distance FROM points CROSS JOIN (SELECT ST_MakePoint(xxx.xxxxxx, xxx.xxxxxx)::geography AS p) AS f WHERE type = :type: AND ST_DWithin(p, point, :distance:) ORDER BY distance (469)
といったエラーとなりうまく実行できません。
発行したいクエリは
SELECT id, type, name, ST_X(point) as lng, ST_Y(point) as lat, ST_Distance(p, point) AS distance FROM points CROSS JOIN (SELECT ST_MakePoint(xxx.xxxxxx, xxx.xxxxx)::geography AS p) AS f WHERE ST_DWithin(p, point, 5000) ORDER BY distance
となり、phalconのコードは以下となりますが、
上記のようなクエリをうまく実行する方法をご存知の方はいらっしゃいませんでしょうか?
$query = $this->_di->get('modelsManager')->createQuery( "SELECT id, type, name, ST_X(point) as lng, ST_Y(point) as lat, ST_Distance(p, point) AS distance FROM points CROSS JOIN (SELECT ST_MakePoint(:lng:, :lat:)::geography AS p) AS f WHERE type = :type: AND ST_DWithin(p, point, :distance:) ORDER BY distance " ); $points = $query->execute([ 'lat' => 'type' => 4, 'distance' => self::SEARCH_DISTANCE ]);
各種ツールのバージョンは以下となります。
Phalcon:2.0.8
Postgresql:9.4.4
PostGis:2.2.0
よろしくお願いします。
あなたの回答
tips
プレビュー