【发布时间】:2013-01-20 22:36:11
【问题描述】:
我已经在Post 和Tag 之间正确建立了HABTM 关系。当用户导航到像 http://site.com/tag/test 这样的 URL 时,我想显示所有带有 test 标记的帖子。
使用以下代码获取标签信息和所有具有该标签的帖子:
public function view($name) {
$this->set('tag', $this->Tag->findByName($name));
}
但是,它返回的帖子没有按created 列排序,它们似乎是在“先到先得”的基础上检索的。我试过这样做:
public function view($name) {
$this->set('tag', $this->Tag->findByName($name, array(
'order' => array('Post.created DESC')
)));
}
但是这给了我一个 SQL 错误:
错误:SQLSTATE[42S22]:找不到列:1054 未知列“标记”。 在“字段列表”中
SQL 查询:SELECT DISTINCT
Tag.` FROMportfolio.tagsASTagWHERETag.name` = 'test' LIMIT 1
有什么方法可以让我在查询中从最新到最旧排序帖子,还是我必须在控制器中重新格式化结果数组?
【问题讨论】:
-
订单仅适用于您从中调用查找的模型,afaik 这没有改变。您不能订购相关型号。您可以尝试使用 cakephp 设置类的排序功能来排序您的结果 - book.cakephp.org/2.0/en/core-utility-libraries/…。或者尝试在 Post 模型中设置顺序或使用可包含行为。
标签: php cakephp has-and-belongs-to-many