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 名称,而不是传统的复数名称。

我解决了这个问题,我的模型没有和我的数据库表同名。一旦正确完成,这个问题就消失了。