Я пытаюсь запустить следующий код:Обновление метода Propel не определено?
$post = PostQuery::create()
->findPk($id);
$post->update($params);
Метод взят из http://propelorm.org/documentation/03-basic-crud.html, но я receice ошибки:
Fatal error: Uncaught exception 'PropelException' with message 'Call to undefined method: update' in /usr/share/php/propel/om/BaseObject.php:426
Что может я сделал неправильно в этом случае? Я могу успешно удалить с удаления-методом с использованием таким же образом:
$post = PostQuery::create()
->findPK($id);
$post->delete();
Update
Я попытался упомянутые решения, то первый из них работает хорошо, но не второй.
$post = PostQuery::create()
->filterById($id)
->update($params);
Теперь это бросает другую ошибку
Fatal error: Uncaught exception 'PropelException' with message 'Cannot fetch ColumnMap for undefined column phpName: id' in /usr/share/php/propel/map/TableMap.php:384
хотя schema.xml выглядит правильно мне:
<table name="post" phpName="Post" idMethod="native">
<column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
Я не знаю, что может быть проблема здесь, как я возможность получения идентификатора с использованием метода find() и
$post->getId();
во время цикла.
Первое решение работает для меня, к сожалению, не второе, что я бы предпочел. Возможно, вы можете вернуться к моему обновленному вопросу для достижения этого; в любом случае спасибо за вашу помощь и объяснение. – 32bitfloat
@ 32bitfloat попробуйте 'filterByPK', даже если' filterById' должен работать над вашей схемой. – j0k
Предположим, вы имели в виду 'filterByPrimaryKey' (который признан моей IDE), поскольку' filterByPK' ожидает одинаково названный столбец (Неизвестный столбец Pk в модели После). Я боюсь, что использование 'filterByPrimaryKey' возвращается в том же сообщении об ошибке, что указано выше в обновлении. Может ли быть проблемой, что во многих таблицах в качестве первичного ключа используется столбец с именем id? Kinda weird ... – 32bitfloat