2013-02-09 54 views
0

未知的专栏中,我有这个模型文件:CakePHP的模型,在字段列表

// Myfan.php 
class Myfan extends AppModel { 
    var $name = 'Myfan'; 
    var $useTable = 'myfans'; 

    function getAll(){ 
     return $this->find('all'); 
    } 

} 

我尝试此查询(这简单地隔离问题)我的控制器类里面。

$Data=$this->Myfan->find('all', 
      array(
       'limit' => 10 
     )); 

从MySQL我得到这个错误:

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

我的表结构是这样的:

CREATE TABLE IF NOT EXISTS `myfans` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `screen_name` varchar(50) CHARACTER SET utf8 NOT NULL, 
    `age` int(20) DEFAULT NULL, 
    `color` int(10) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=705314 ; 

我从/httpdocs/app/tmp/cache/models文件夹中删除myapp_cake_model_default_mydatabase_myfans文件。 Cake自动创建文件,但我仍然得到相同的错误。我该如何解决这个问题?

我甚至没有我的表里面的“名称”字段。但我不确定我以前是否有过。 Cake在哪里检查该字段?

编辑:我得到同样的错误,当我更改查询到这一点:

$Data=$this->Myfan->find('all', array(
     'conditions' => array('Myfan.screen_name' => $screenname), 
     'order' => array('Myfan.id DESC') 
    )); 

而且我AppModel

// AppModel.php 
App::uses('Model', 'Model'); 

class AppModel extends Model { 
} 
+0

这是你的模型的*实际*代码,还是有更多的代码(验证规则,关系,虚拟域?) – thaJeztah 2013-02-09 11:04:14

+0

@thaJeztah是的,这是实际的代码。没有更多的关系等。 – trante 2013-02-09 11:16:19

+0

你可以添加产生错误的完整查询到你的问题吗? (请使用编辑,而不是添加它作为评论) – thaJeztah 2013-02-09 11:21:00

回答

1

如果您使用不同的显示领域,你需要告诉型号,以及:

$this->displayField = 'screen_name'; 

对于“名称”和“钛” “蛋糕能够自动检测。

+0

+1这可能是错误的。或者,如果你不需要显示字段,你可以将它设置为false – Angad 2013-02-09 10:50:11

+0

现在我试图添加字段键到我的模型查询,它的工作原理是这样的:''Data = $ this-> Myfan-> find ('all', array('fields'=> array('Myfan.screen_name'), 'limit'=> 10));'''但我需要获取所有字段。可能吗? – trante 2013-02-09 10:55:26

+0

Afaik displayField只能用于find('list'),而不能用于find('all')。如果明确设置了* no * displayField,则不会出现错误(表中的'name'字段* *不是*必需的) – thaJeztah 2013-02-09 11:25:18