0

我确定我以前做过类似的事情,但找不到它,谷歌也没有帮助。

如果可能,使用 Phalcon 模型,我想从 ID 出现最多的表中选择项目 - 即按受欢迎程度排序的 10 个最受欢迎的项目。这可以使用Model::find("conditions")吗?我必须为此使用 PHQL 吗?

4

2 回答 2

1

使用模型::查找

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');
于 2019-03-28T23:26:55.720 回答
0

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 可能会根据查询要求的事实默认为该模式*

于 2019-03-29T22:49:14.353 回答