【发布时间】:2010-01-07 16:17:44
【问题描述】:
我对@987654322@ 方法有疑问,因为它抛出了一个异常
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
我改用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() 方法不能按预期运行(是我的预期错误还是什么)!
【问题讨论】:
标签: php mysql doctrine foreign-keys