我确定我以前做过类似的事情,但找不到它,谷歌也没有帮助。
如果可能,使用 Phalcon 模型,我想从 ID 出现最多的表中选择项目 - 即按受欢迎程度排序的 10 个最受欢迎的项目。这可以使用Model::find("conditions")
吗?我必须为此使用 PHQL 吗?
我确定我以前做过类似的事情,但找不到它,谷歌也没有帮助。
如果可能,使用 Phalcon 模型,我想从 ID 出现最多的表中选择项目 - 即按受欢迎程度排序的 10 个最受欢迎的项目。这可以使用Model::find("conditions")
吗?我必须为此使用 PHQL 吗?
使用模型::查找
Model::find([
'columns' => 'id,count(id) as counter',
'group' => 'id',
'order' => 'counter DESC'
]);
PHQL:
$this->modelsManager->executeQuery('SELECT count(id) AS counter,id FROM ModelName GROUP BY id ORDER BY counter DESC');
find()
确实有一个group
子句,但我认为不可能做你想做的,因为你还需要做一个计数。
Talal 的答案很接近,但如果你想要一个模型对象列表,它将不起作用。
像这样的东西应该工作:
$Results = $this->modelsManager->executeQuery('SELECT * FROM ModelName GROUP BY id ORDER BY count(id) DESC LIMIT 10');
$Results->setHydrationMode(\Phalcon\Mvc\Model\Resultset::HYDRATE_RECORDS);
可能不需要设置水合模式,因为 Phalcon 可能会根据查询要求的事实默认为该模式*
。