Phalcon模型按项目受欢迎程度的顺序(出现次数)

时间:2019-03-28 14:45:33

标签: phalcon phalcon-orm

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

如果可能,请使用Phalcon模型,我要从ID最高的表格中选择商品-即按人气排序的10项最受欢迎的商品。是否可以使用Model::find("conditions")?我必须为此使用PHQL吗?

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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可能会根据查询要求*的事实默认设置为该模式。