У меня возникла проблема с методом 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()
на официальном сайте
О, мой плохой. Я раньше этого не видел, позор мне = p
В вашей таблице есть два первичных ключа (id и country_id), поэтому для метода find вам необходимо передать оба параметра методу поиска.
Вместо этого вы можете использовать магические методы:
Doctrine::getTable('City')->findOneById(1)
Начиная с версии 1.2.1, Doctrine_Table:: find() является NOT устаревшим Вы можете проверить официальную документацию на http://www.doctrine-project.org/documentation/manual/1_2/en/component-overview#table:finder-methods
Что касается ошибки "недопустимый номер параметра", это означает, что запрос имеет больше или меньше параметров, чем ожидалось, чаще всего вы использовали токен (?) и забыли добавить к нему параметр
Doctrine_Query::create()
->from('User u')
->where('u.name = ?', 'Jonh')
->andWhere('u.is_active = ?')
В примере, который я использовал, есть два токена "?", но только один параметр "jonh", он выдавал бы ту же ошибку: "Недопустимый номер параметра: количество связанных переменных не совпадает с числом токенов"
id
из City
, поэтому она требует прохождения каждого первичного ключа или что ??
Doctrine::getTable('City')->findOneById(1)
:).