2013-02-09 72 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

相關問題