2013-01-20 44 views
1

我已正確設置了PostTag之間的HABTM關係。當用戶導航到像http://site.com/tag/test這樣的URL時,我想顯示標記爲test的所有帖子。通過其標籤在HABTM關係中訂購帖子

使用下面的代碼獲取標籤信息和所有有標籤的帖子:

public function view($name) { 
    $this->set('tag', $this->Tag->findByName($name)); 
} 

但是,它的回報也無法通過自己的created列排序的職位,他們似乎在被檢索「先到先得「的依據。有

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Tag.' in 'field list'

SQL Query: SELECT DISTINCT Tag . ` FROM portfolio . tags AS Tag WHERE Tag . name` = 'test' LIMIT 1

任何方式對我來說,順序從最新到最舊的帖子在查詢或做我必須重新設置:我試着這樣做:

public function view($name) { 
    $this->set('tag', $this->Tag->findByName($name, array(
     'order' => array('Post.created DESC') 
    ))); 
} 

但是這給了我一個SQL錯誤結果數組在我的控制器?

+0

訂單隻有您所呼叫從找到樣板工程,據我所知這

$this->Recipe->bindModel(array( 'hasOne' => array( 'RecipesTag', 'FilterTag' => array( 'className' => 'Tag', 'foreignKey' => false, 'conditions' => array('FilterTag.id = RecipesTag.tag_id') )))); $this->Recipe->find('all', array( 'fields' => array('Recipe.*'), 'conditions'=>array('FilterTag.name'=>'Dessert') )); 

它應用到你的情況:從菜譜例沒有改變。您無法在相關型號上訂購。您可以嘗試使用cakephp設置類的排序函數來排序結果 - http://book.cakephp.org/2.0/en/core-utility-libraries/set.html#set-compatible-path-syntax。或者嘗試在Post模型中設置訂單或使用可容納的行爲。 –

回答

0

你需要做的Post模型查找,然後強制特設從連接表的標籤表連接,設置一個條件,Tag.name = $name和排序Post.created DESC

或者通過重新綁定某些型號。 ( - >郵政和RecipesTag - > PostsTag配方),只是增加你的排序