0

私はこのモデルファイルを持っています:

// 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 ;

myapp_cake_model_default_mydatabase_myfansフォルダからファイルを削除しまし/httpdocs/app/tmp/cache/modelsた。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 {
}
4

1 に答える 1

1

別の表示フィールドを使用する場合は、次のこともモデルに伝える必要があります。

$this->displayField = 'screen_name';

「名前」と「タイトル」については、ケーキは自動検出できます。

于 2013-02-09T10:35:02.320 に答える