CFWheels:模型 FindAll() 在相关 table 名称中附加字母 "s"
CFWheels: Model FindAll() appends letter "s" in related table name
checklist = model("user_checklist").findAll(include="tb_machine_checklist");
以上是我用来从名为 user_checklist 的 table 中获取记录的查询,它与名为 tb_machine_checklist 的 table 有关。
现在有一个名为 "tb_machine_checklist" 的 table,但是它给我一个错误提示;
The "tb_machine_checklists" table could not be found in the database.
为什么我没有指定却添加了 "s"?
我猜 findAll 中的 include 指定了模型名称,而不是 table 名称。 Wheels ORM 在某些情况下将模型名称复数化并将其映射到 table 名称。也许您可以在模型中明确设置模型的 table 名称?
请务必阅读文档中有关 Conventions 的章节。
CFWheels adopts a Rails-style naming conventions for database tables and model files. Think of a database table as a collection of model objects; therefore, it is named with a plural name. Think of a model object as a representation of a single record from the database table; therefore, it is named with a singular word.
幸运的是,CFWheels 允许您使用一些额外的代码来覆盖大多数约定。
在您的 tb_machine_checklist
模型的 init
方法中,添加这行代码:
<cffunction name="init">
<cfset table("tb_machine_checklist")>
</cffunction>
然后 CFWheels 为您编写的任何查询都将使用您的单数 table 名称,而不是传统的复数名称。
我解决了这个问题,我的模型没有和我的数据库表同名。一旦正确完成,这个问题就消失了。
checklist = model("user_checklist").findAll(include="tb_machine_checklist");
以上是我用来从名为 user_checklist 的 table 中获取记录的查询,它与名为 tb_machine_checklist 的 table 有关。
现在有一个名为 "tb_machine_checklist" 的 table,但是它给我一个错误提示;
The "tb_machine_checklists" table could not be found in the database.
为什么我没有指定却添加了 "s"?
我猜 findAll 中的 include 指定了模型名称,而不是 table 名称。 Wheels ORM 在某些情况下将模型名称复数化并将其映射到 table 名称。也许您可以在模型中明确设置模型的 table 名称?
请务必阅读文档中有关 Conventions 的章节。
CFWheels adopts a Rails-style naming conventions for database tables and model files. Think of a database table as a collection of model objects; therefore, it is named with a plural name. Think of a model object as a representation of a single record from the database table; therefore, it is named with a singular word.
幸运的是,CFWheels 允许您使用一些额外的代码来覆盖大多数约定。
在您的 tb_machine_checklist
模型的 init
方法中,添加这行代码:
<cffunction name="init">
<cfset table("tb_machine_checklist")>
</cffunction>
然后 CFWheels 为您编写的任何查询都将使用您的单数 table 名称,而不是传统的复数名称。
我解决了这个问题,我的模型没有和我的数据库表同名。一旦正确完成,这个问题就消失了。