Php 该方法是否已被弃用?

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

我对方法Doctrine_Table::find有一个问题,因为它引发了 SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配

我通过使用doctor::getTable'City->findOneById$id解决了这个问题;相反,它工作得很好

当我试图深入研究这个问题时,我感到惊讶,因为在中没有关于方法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::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:。我明白了!,我一开始设计数据库就犯了错误!。对不起,没有。我不应该将外键设置为主键。。。