如何在 Phalcon Framework 中订购合并结果
How to order joined results in Phalcon Framework
假设我正在编辑一本杂志,其中一个类别(如 "sport"、"art" 等)可以包含多篇文章。因此,我想提取特定类别的所有文章。在 Phalcon 中我通常这样做:
$category = \Models\Category::findFirst(array(
'conditions' => 'id = ?1',
'bind' => array(1 => $id)
));
然后:
foreach ($category->Article as $article) {
// do something with $article
}
效果很好,但我想对这些文章进行排序 - 比如说 - 按日期升序排列。我怎么能做到这一点?
您应该在 for..loop
语句中使用 get
前缀,因此您的代码应该像这样:
foreach ($category->getArticle(array('order' => 'date DESC')) as $article) {
// do something with $article
}
主要Docs解释更多例子
试一试并获得结果。
M2sh 的答案很重要而且很实际,我只是 post 一个次要的方法,只使用专为文章设计的模型:
$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 方式中使用这组参数。
为了完整起见,还有一个。我将借用 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();
假设我正在编辑一本杂志,其中一个类别(如 "sport"、"art" 等)可以包含多篇文章。因此,我想提取特定类别的所有文章。在 Phalcon 中我通常这样做:
$category = \Models\Category::findFirst(array(
'conditions' => 'id = ?1',
'bind' => array(1 => $id)
));
然后:
foreach ($category->Article as $article) {
// do something with $article
}
效果很好,但我想对这些文章进行排序 - 比如说 - 按日期升序排列。我怎么能做到这一点?
您应该在 for..loop
语句中使用 get
前缀,因此您的代码应该像这样:
foreach ($category->getArticle(array('order' => 'date DESC')) as $article) {
// do something with $article
}
主要Docs解释更多例子
试一试并获得结果。
M2sh 的答案很重要而且很实际,我只是 post 一个次要的方法,只使用专为文章设计的模型:
$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 方式中使用这组参数。
为了完整起见,还有一个。我将借用 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();