CFWheels:将表映射到另一个数据库Database.tablename

时间:2015-11-11 19:00:12

标签: coldfusion cfwheels

我有一个名为“cforms”的数据源,可以访问两个数据库 “cforms”和“cquizes”

我希望创建以下查询:

select * from cquizes.tb_depts;

我有一个表“tb_depts”的模型:

<cfcomponent extends="Model">
    <cffunction name="init">
        <cfset table("tb_depts")>
    </cffunction>
</cfcomponent>

我的控制员:

list = model("tb_depts").findAll(order="id");

当我运行此控制器/动作时。它给了我以下错误:

[Macromedia][Oracle JDBC Driver][Oracle]ORA-00942: table or view does not exist

它会生成以下查询:

 SELECT * FROM tb_depts

我明白问题是什么,因为数据库“cforms”中不存在“tb_depts”,它会抛出未找到的错误。但是有办法告诉模型使用数据源“cforms”访问数据库“cquizes”。例如

cquizes.tb_depts

它似乎使用与数据源名称匹配的数据库。有没有办法解决这个功能。

1 个答案:

答案 0 :(得分:1)

如果您需要从另一个数据库获取数据,还有另一种方法。为此,您需要为第二个数据库 cquizes 创建数据源。然后在模型文件中使用该数据源名称。这将覆盖该模型的默认数据源。

例如,如果您将第二个数据源命名为 cquizdatasource ,那么在您的模型中就像

<cfcomponent extends="Model">
    <cffunction name="init">
        <cfset dataSource("cquizdatasource")>
        <cfset table("tb_depts")>
    </cffunction>
</cfcomponent>

您的查询应该可以正常使用问题中的所述方案。对此有一些限制,check out the link了解更多信息。