【发布时间】:2016-06-02 18:54:34
【问题描述】:
在我的查询中添加GROUP BY 时,Phalcon 给我一个错误 - Phalcon\Mvc\Model\Exception: Syntax error, unexpected token GROUP, near to ' 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 一起工作(无需进行自定义分页)?
【问题讨论】:
-
您选择的
$dist是什么?SELECT $dist $ads_model.id AS id -
@Timothy 如果您查看生成的查询,您可以看到
$dist产生了什么,但它与问题无关。 -
我看到你在使用
having之前使用group by。group by应该在having之前 -
@Timothy 谢谢这就是问题所在。我已将
HAVING标记到WHERE的末尾。我现在把它移到GROUP BY之后,一切都好。如果您将其添加为答案,我可以给您好评! -
是的,这样做,然后ping我们,这样我们就可以为敏锐的眼睛撒点儿
标签: php mysql pagination group-by phalcon