作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 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
列在 Propel 生成的代码中被识别为 Failedlogins
。我意识到我可以将 phpName
添加到有问题的列中,但我想知道我是否错过了配置选项。我检查了 Propel buildtime configuration page ,我看到一个名为 propel.samePhpName
的选项,但由于它位于“逆向工程”部分下,所以它似乎不是我需要的选项。别人问过similar questions ,但我还没有看到明确的答案。
是否有一个配置选项可以让每一列的 phpName
简单地匹配模式中的 name
属性?
最佳答案
不,没有办法做到这一点,也没有构建属性。
实际上,你不应该像以前那样命名你的表属性,你应该给它们加上下划线:
<table name="Users" phpName="User">
<column name="user_id" type="varchar" size="20" required="true" primaryKey="true" />
<column name="first_name" type="varchar" size="255" required="true" />
<column name="last_name" 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="role_id" type="integer" required="true" />
<column name="failed_logins" type="integer" required="true" defaultValue="0" />
<column name="locked_out" type="boolean" required="true" defaultValue="false" />
<column name="active" type="boolean" required="true" defaultValue="true" />
</table>
这样你会得到 UserId
, …, FailedLogins
, …
威廉
关于php - 为列推进区分大小写的 phpNames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8198260/
我的 schema.xml 的相关部分: ... 以下命令因 PropelException
我是一名优秀的程序员,十分优秀!