我确定我之前已经做过类似的事情,但是找不到它,谷歌也没有帮助。
如果可能,请使用Phalcon模型,我要从ID最高的表格中选择商品-即按人气排序的10项最受欢迎的商品。是否可以使用Model::find("conditions")
?我必须为此使用PHQL吗?
答案 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可能会根据查询要求*
的事实默认设置为该模式。