我正在尝试循环使用ColdFusion ORM将数据插入到数据库中。
我在解决语法问题上遇到了问题。这是我想要做的一个例子:
<cfscript>
var tn = 'CompanyName';
transaction{
newComp = EntityNew("company");
newComp.set & tn &('ABC Comp');
EntitySave(newComp);
}
</cfscript>
为了简化这个问题,我只使用一个变量。实际代码循环遍历数据数组,但如果我能弄清楚如何使用变量来处理其余的数据。
我尝试了很多方法,但我无法正确理解语法。
这可能吗?
任何帮助都会很棒。
提前致谢。
答案 0 :(得分:3)
您可以使用cfinvoke标记来避免评估:
<cfset tn = "CompanyName">
<cftransaction>
<cfset newComp = EntityNew("company")>
<cfinvoke component="#newComp#" method="set#tn#">
<cfinvokeargument name="#tn#" value="ABC Corp">
</cfinvoke>
</cftransaction>
在示例here
中使用它的更多内容下一版ColdFusion将带来invoke to script.
答案 1 :(得分:1)
尝试
evaluate( 'newComp.set#tn#( "ABC Comp" )' );
答案 2 :(得分:0)
也许在您的模型中编写一个方法,以接受其API的“动态”状态部分和包裹,例如:
component {
function setState( Struct state ){
var key = 0;
for ( key in state )
{
variables[ key ] = state[ key ];
}
}
}
然后,在您的调用代码中,传递一个struct:
newComp = EntityNew( 'Company' );
state = {};
state[ tn ] = 'ABC Comp';
newComp.setState( state );
我们在构造函数中经常这样做,允许我们一次性完成任务,类似于Groovy和其他一些语言:
var chuck = new Contact( { firstName = "Chuck", lastName = "Taylor" });