Соответствующая часть моего schema.xml
:
<database name="Inventory" defaultIdMethod="native">
<table name="Users" phpName="User">
<column name="UserId" type="varchar" size="20" required="true" primaryKey="true" />
<column name="FirstName" type="varchar" size="255" required="true" />
<column name="LastName" type="varchar" size="255" required="true" />
<column name="Password" type="varchar" size="255" required="true" />
<column name="Salt" type="char" size="22" required="true" />
<column name="RoleId" type="integer" required="true" />
<column name="FailedLogins" type="integer" required="true" defaultValue="0" />
<column name="LockedOut" type="boolean" required="true" defaultValue="false" />
<column name="Active" type="boolean" required="true" defaultValue="true" />
</table>
...
</database>
Следующая команда завершается ошибкой с PropelException
:
UserQuery::create()
->filterByActive(true)
->update(array('FailedLogins' => 0, 'LockedOut' => false));
Ошибка:
[Sat Nov 19 16:28:01 2011] [error] [client 127.0.0.11] PHP Fatal error: Uncaught exception 'PropelException' with message 'Cannot fetch ColumnMap for undefined column phpName: FailedLogins' in /home/andrew/pss-repository/vendor/propel/runtime/lib/map/TableMap.php:372\nStack trace:\n#0 /home/andrew/pss-repository/vendor/propel/runtime/lib/query/ModelCriteria.php(1668): TableMap->getColumnByPhpName('FailedLogins')\n#1 /home/andrew/pss-repository/vendor/propel/runtime/lib/query/ModelCriteria.php(1626): ModelCriteria->doUpdate(Array, Object(PropelPDO), false)\n#2 /home/andrew/pss-repository/login-reset-process.php(11): ModelCriteria->update(Array)\n#3 {main}\n thrown in /home/andrew/pss-repository/vendor/propel/runtime/lib/map/TableMap.php on line 372, referer: http://pss/login-reset-all.php
Я могу убедиться, что столбец FailedLogins
идентифицируется как Failedlogins
в коде, сгенерированном Propel. Я понимаю, что, вероятно, могу добавить phpName
к рассматриваемым столбцам, но мне было интересно, не пропустил ли я параметр конфигурации. Я проверил страницу конфигурации времени сборки Propel и увидел параметр под названием propel.samePhpName
, но поскольку он находится в разделе «Обратное проектирование», похоже, это не тот вариант, который мне нужен. Другие задавали похожие вопросы, но я не видел четкий ответ.
Есть ли вариант конфигурации, чтобы phpName
каждого столбца просто соответствовало атрибуту name
в схеме?