微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

推进区分大小写的phpNames列

我的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

我能够验证在Propel生成代码FailedLogins列是否被标识为Failedlogins.我意识到我可以将PHPName添加到有问题的列中,但是我想知道是否错过了配置选项.我检查了Propel buildtime configuration page,然后看到一个名为propel.samePHPName的选项,但是由于它在“逆向工程”部分下,因此它似乎不是我需要的选项.其他人问了similar questions,但是我没有看到明确的答案.

是否有一个配置选项可以使每列的PHPName与模式中的name属性简单匹配?

解决方法:

没有办法,也没有build属性.

实际上,您不应该像以前那样命名表属性,而应该对它们进行低估:

<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,…

威廉

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐