我正在将 Model-Glue/Coldspring 用于新应用程序,我想我会将 CF9 ORM 加入其中。
我现在遇到的唯一问题是用对象填充实体。下面的代码或多或少地验证了只能存在一个用户名。还有一些其他逻辑没有显示。
我的第一个想法是使用这样的东西:
var实体=entityload('UserAccount',{UserName=arguments.UserAccount.getUserName()},"true")
entity = argument.UserAccount;
然而这并没有按照我预期的方式工作。是否可以用对象填充实体,或者我是否需要使用 setter ?
最佳答案
不确定这是否是您要找的。如果你有...
component persistent="true" entityName="Foo"
{
property a;
property b;
}
您可以在第二个参数中传递一个结构来初始化实体(我相信是在 CF9.0.1 中添加的)
EntityNew("Foo", {a="1",b="2"});
要使用另一个对象填充 Foo,您可以使用 Memento 模式,并为您的对象实现一个 GetMemento()
函数,该函数返回其所有属性的结构。
EntityNew("Foo", bar.getMemento());
但是,CF 不会调用您的自定义 setter !如果您想使用 setter 来设置它们,您可以在 init()
构造函数中添加对 setter 的调用,或者使用您选择的 MVC 框架来填充 bean。在 Model-Glue 中,它是 makeEventBean()
。
更新:或者...这是黑客...
EntityNew("Foo", DeserializeJSON(SerializeJSON(valueObject)));
使用此功能需要您自担风险。 JSON 可能会对您的数字和"is"、“否”、“真”、“假”字符串做出奇怪的事情。 :)
关于orm - CF9 ORM 用对象填充实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6127717/