2011-09-05 27 views
0

所以我試圖在我的元素視圖中找到一個查找表,我正在通過在我的標記控制器中創建一個輔助函數來實現。CakePHP返回一個不同於指定的表的錯誤

<?php 
class TagsController extends AppController { 

    var $name = 'Tags'; 

    function gettags(){ 
     if (!empty($this->params['requested'])) { 
      return $this->Tag->find('list', array('fields'=>'Tag.tag_name')); 
     } 
     return false; 
    } 
} 

然後在我看來,我叫

<? $tags = $this->requestAction('/tags/gettags'); debug($tags); ?> 

然而,返回錯誤

Warning (512): SQL Error: 1054: Unknown column 'Tag.tag_name' in 'field list' [CORE/cake/libs/model/datasources/dbo_source.php, line 684] Query: SELECT Tag . id , Tag . tag_name FROM users AS Tag WHERE 1 = 1

這意味着它認爲我的標籤表實際上是一個用戶。這在標籤視圖中不會發生。任何人有什麼想法,我做錯了什麼?這些表格與其他或任何東西都沒有關聯。

我的標籤模式是:

<?php 
class Tag extends AppModel { 
    var $name = 'Tag'; 

    var $hasMany = array(
     'BrandTag' => array(
      'className' => 'BrandTag', 
      'foreignKey' => 'tag_id', 
      'dependent' => true, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
     )); 

    } 
?> 
+0

你可以附加你的標籤模型文件嗎? – minaz

+1

使用'requestAction'確實不是好習慣。它有點違背了MVC的概念。你應該真的只是在呈現該視圖的控制器動作中設置gettags函數的結果。就像這樣:'$ this-> set('tags',$ this-> gettags());' –

+0

我會這樣做,但是沒有直接看到cakephp中的元素視圖。所以我只是把這個函數放到了標籤控制器中 – dao

回答

1

像這樣的東西應該工作:

$this->getModel('Tag')->find('list', array('fields'=>'Tag.tag_name'); 

至於說你不應該從這樣的觀點檢索,這不是好的MVC的做法。

如果標籤代碼將被多個控制器檢索到,您應該考慮創建一個這些控制器可以根據需要加載的組件。

+0

這就是我在調用$ this-> Tag->時所做的事情,但奇怪的是它正在檢索User模型而不是Tag模型 – dao

0

Dao可能值得進入app/tmp/cache文件夾並刪除模型文件夾中的文件。您可能緩存了一個損壞的模型。