Phalcon PHQL GROUP BY 错误

Phalcon PHQL GROUP BY error

在我的查询中添加 GROUP BY 时,Phalcon 给我一个错误 - Phalcon\Mvc\Model\Exception: 语法错误,意外的标记组,靠近 ' BY...

这是我的代码;

$phql = "
    SELECT $dist $ads_model.id AS id, $ads_model.title AS title, $ads_model.description AS description, $ads_model.country AS country, $ads_model.city AS city, $ads_model.latitude AS latitude, $ads_model.longitude AS longitude, $image_model.file AS image
    FROM $ads_model
    LEFT JOIN $image_model ON $image_model.ad_id = $ads_model.id
    WHERE $where
    GROUP BY $ads_model.id
    $order
    ";
    $ads = $this->modelsManager->executeQuery($phql);

这是正在生成的查询;

Phalcon\Mvc\Model\Manager->executeQuery(\n SELECT (3959 * acos( cos( radians( xxxx ) ) * cos( radians( \Baseapp\Models\ClassifiedsAds.latitude ) ) * cos( radians( \Baseapp\Models\ClassifiedsAds.longitude ) - radians( xxxx ) ) + sin( radians( xxxx ) ) * sin( radians( \Baseapp\Models\ClassifiedsAds.latitude ) ) ) ) AS distance, 
\Baseapp\Models\ClassifiedsAds.id AS id, \Baseapp\Models\ClassifiedsAds.title AS title, \Baseapp\Models\ClassifiedsAds.description AS description, \Baseapp\Models\ClassifiedsAds.country AS country, \Baseapp\Models\ClassifiedsAds.city AS city, \Baseapp\Models\ClassifiedsAds.latitude AS latitude, \Baseapp\Models\ClassifiedsAds.longitude AS longitude, \Baseapp\Models\ClassifiedsImages.file AS image\n 
FROM \Baseapp\Models\ClassifiedsAds\n 
LEFT JOIN \Baseapp\Models\ClassifiedsImages ON \Baseapp\Models\ClassifiedsImages.ad_id = \Baseapp\Models\ClassifiedsAds.id\n 
WHERE \Baseapp\Models\ClassifiedsAds.status = 'active' Having distance <= 100\n 
GROUP BY \Baseapp\Models\ClassifiedsAds.id\n 
ORDER BY distance ASC\n )

运行 MySQL 中查询的简化版本按预期工作。为什么 Phalcon 搞砸了 GROUP BY 子句?如果 GROUP BY 被遗漏,查询将运行。我如何让它在 PHQL 中工作?

还有一个完全相关的问题:我为此使用 PHQL,因为 Phalcon 的分页似乎不适用于原始 MySQL。有没有办法让 Phalcon 分页与 raw 一起工作(无需进行自定义分页)?

你的子句顺序有误。

您必须在 GROUP BY 之后声明 HAVING 子句。

[GROUP BY {col_name | expr | position}
  [ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
  [ASC | DESC], ...]

有关完整示例,请参阅 mysql docs