我有一个名为“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
它似乎使用与数据源名称匹配的数据库。有没有办法解决这个功能。
答案 0 :(得分:1)
如果您需要从另一个数据库获取数据,还有另一种方法。为此,您需要为第二个数据库 cquizes 创建数据源。然后在模型文件中使用该数据源名称。这将覆盖该模型的默认数据源。
例如,如果您将第二个数据源命名为 cquizdatasource ,那么在您的模型中就像
<cfcomponent extends="Model">
<cffunction name="init">
<cfset dataSource("cquizdatasource")>
<cfset table("tb_depts")>
</cffunction>
</cfcomponent>
您的查询应该可以正常使用问题中的所述方案。对此有一些限制,check out the link了解更多信息。