我有一個問題,該方法Doctrine_Table::find()
,因爲它thorowing的 SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Doctrine_Table :: find()方法是否被棄用?
例外,我通過使用Doctrine::getTable('City')->findOneById($id);
而不是解決了這個問題,它工作正常。
當我試圖回想起這個問題時,我很驚訝,因爲沒有關於official website中的方法Doctrine_Table::find()
的文檔。
任何人都知道是什麼問題?它是否被棄用? 順便說一句,它存在於實際的代碼!版本(1.2.1)。
有關數據庫的詳細信息:
CREATE TABLE IF NOT EXISTS `country` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(64) NOT NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS `city` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(64) NOT NULL ,
`country_id` INT NOT NULL ,
PRIMARY KEY (`id`, `country_id`) ,
INDEX `fk_city_country` (`country_id` ASC) ,
CONSTRAINT `fk_city_country`
FOREIGN KEY (`country_id`)
REFERENCES `country` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;
什麼奇怪的是,無論Doctrine_Table::find()
,並Doctrine_Table::findOneById()
工作正常上Country
表!
PS:我意識到Doctrine_Table::findOneById()
是__call()
生成的方法。這讓我更困惑,爲什麼實際的find()
方法不能像預期的那樣行事(我的期望是錯誤的還是什麼)!
謝謝:),我認爲這是原因,但它對我沒有意義......即使是現在! 無論如何,這是一個設計的事情。所以我可以使用'Doctrine :: getTable('City') - > findOneById(1)'沒有問題:)。 –
我懂了!,我首先在設計數據庫時犯了錯誤!對不起,數據庫沒有。我不應該將外鍵設置爲主鍵...... –