【问题标题】:Phalcon Model order by item popularity (number of appearances)Phalcon Model 按项目受欢迎程度排序(出现次数)
【发布时间】:2019-08-19 09:25:59
【问题描述】:

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

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

【问题讨论】:

    标签: phalcon phalcon-orm


    【解决方案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');
    

    【讨论】:

    • 这与我最终做的类似,但想知道是否有使用Model::find() 的简单方法。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-16
      • 2016-03-10
      • 2022-01-12
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多