如何在Phalcon Framework中订购联合结果

时间:2015-10-03 09:33:22

标签: php database phalcon

让我们假装我正在制作一本杂志,其中一个类别(如“运动”,“艺术”等)可以包含多篇文章。因此,我想提取特定类别的所有文章。在Phalcon,我通常会这样做:

$category = \Models\Category::findFirst(array(
    'conditions' => 'id = ?1',
    'bind'       => array(1 => $id)
));

然后:

foreach ($category->Article as $article) {
    // do something with $article
}

它运作良好,但我想对这些文章进行排序 - 比如说 - 明智的,提升的。我怎么能做到这一点?

3 个答案:

答案 0 :(得分:4)

您应在get语句中使用for..loop前缀,因此您的代码应如下所示:

foreach ($category->getArticle(array('order' => 'date DESC')) as $article) {
    // do something with $article
}

Docs解释了更多例子 尝试一下&得到你的结果。

答案 1 :(得分:3)

M2sh的答案非常重要和实际,我只会发布第二种方式,只使用专为文章设计的模型:

$page = 5; // eg. 5th page of results
$limit = 100; // eg. 100 results per page

$articles = \Models\Articles::find(array(
    'conditions' => 'category_id = :cid:',
    'bind' => array(
        'cid' => $id
    ),
    'order' => 'date DESC, id DESC',
    'limit' => $limit,
    'offset' => $page * $limit
));

可以以M2sh的方式使用这样的参数集。

答案 2 :(得分:1)

还有一个完整性。我将借用yergo来说明差异:

$page = 5;
$limit = 100;

$articles = \Models\Articles::query()
    ->where('category_id= :cid:', array('cid' => $id)
    ->orderBy('date DESC, id DESC')
    ->limit($limit)
    ->offset($page * $limit)
    ->query();