У меня была проблема с методом Doctrine_Table::find()
, так как он использует исключение
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Я решил проблему с помощью Doctrine::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::findOneById()
отлично работают на Country
столе!
PS: Я понимаю, что Doctrine_Table::findOneById()
является сгенерированным __call()
методом. И это еще больше сбивает меня с толку, почему метод find()
не может вести себя так, как ожидалось (мои ожидания неверны или что)!