CakePHP返回与指定表不同的表时出错

时间:2011-09-05 15:46:25

标签: 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); ?>

但是,它会返回错误

  

警告(512):SQL错误:1054:'字段列表'中的未知列'Tag.tag_name'[CORE / cake / libs / model / datasources / dbo_source.php,第684行]   查询:SELECT TagidTagtag_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' => ''
        ));

    }
?>

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

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

如上所述,您不应该从这样的视图中检索,这不是很好的MVC实践。

如果多个控制器将检索Tag代码,您应该考虑创建一个这些控制器可以根据需要加载的组件。

答案 1 :(得分:0)

Dao可能值得进入app / tmp / cache文件夹并删除模型文件夹中的文件。您可能已经缓存了一个腐败的模型。