Php 该方法是否已被弃用?
我对方法Doctrine_Table::find有一个问题,因为它引发了 SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配 我通过使用doctor::getTable'City->findOneById$id解决了这个问题;相反,它工作得很好 当我试图深入研究这个问题时,我感到惊讶,因为在中没有关于方法Doctrine_Table::find的文档 有人知道问题出在哪里吗?它被弃用了吗? 顺便说一句,它存在于实际代码中!版本1.2.1的 有关数据库的详细信息:Php 该方法是否已被弃用?,php,mysql,doctrine,foreign-keys,Php,Mysql,Doctrine,Foreign Keys,我对方法Doctrine_Table::find有一个问题,因为它引发了 SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配 我通过使用doctor::getTable'City->findOneById$id解决了这个问题;相反,它工作得很好 当我试图深入研究这个问题时,我感到惊讶,因为在中没有关于方法Doctrine_Table::find的文档 有人知道问题出在哪里吗?它被弃用了吗? 顺便说一句,它存在于实际代码中!版本1.2.1的 有关数据库的详细信息: CR
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::FindDoneByid在Country Table上都可以正常工作
PS:我意识到Doctrine_Table::findOneById是一个调用生成的方法。这让我更加困惑,为什么实际的find方法不能像预期的那样运行是我的预期错误还是什么 从V1.2.1开始,Doctrine_Table::find未被弃用 您可以在上查看官方文档 至于无效参数编号错误,这意味着您查询的参数比预期的多或少,通常是您使用了一个令牌,而忘记了将参数添加到其中
Doctrine_Query::create()
->from('User u')
->where('u.name = ?', 'Jonh')
->andWhere('u.is_active = ?')
我使用的示例有两个标记“?”,但只有一个参数“jonh”,它会抛出相同的错误:参数编号无效:绑定变量的数量与标记的数量不匹配。我没早点看到,真丢脸 您的表有两个主键id和country_id,因此find方法要求您将这两个参数传递给find方法 您可以使用神奇的方法:
Doctrine::getTable('City')->findOneById(1)
在我的例子中,我传递的是一个参数,它是城市的标识id,那么它需要传递每个主键吗?你能发布你正在使用的查询吗?这将非常有帮助:问题查询是这样的:条令::getTable'City'->find1;这写在我的问题里。谢谢:,我以为这就是原因,但对我来说没有意义。。。即使现在!。无论如何,这是一个设计的东西。所以我可以毫无问题地使用原则::getTable'City'->findOneById1:。我明白了!,我一开始设计数据库就犯了错误!。对不起,没有。我不应该将外键设置为主键。。。