Coldfusion CFWheels-未插入记录
一般来说,我不熟悉CFWheels和框架 我正在关注Wheels网站上的屏幕广播: 我完全按照教程的内容进行操作……唯一的区别是,他的表名为“people”,而我的表名为“users”。我做了相应的改变,但其他一切都保持不变 他的单数是“person”,我的单数是“user” 以下是我的“User.cfc”控制器中的插入代码:Coldfusion CFWheels-未插入记录,coldfusion,cfc,railo,cfwheels,Coldfusion,Cfc,Railo,Cfwheels,一般来说,我不熟悉CFWheels和框架 我正在关注Wheels网站上的屏幕广播: 我完全按照教程的内容进行操作……唯一的区别是,他的表名为“people”,而我的表名为“users”。我做了相应的改变,但其他一切都保持不变 他的单数是“person”,我的单数是“user” 以下是我的“User.cfc”控制器中的插入代码: <cfcomponent extends="Controller" output="true"> <cffunction name="reg
<cfcomponent extends="Controller" output="true">
<cffunction name="register">
<cfset user = model("user").new() />
</cffunction>
<cffunction name="create">
<cfset params.user['userUUID'] = createUUID() />
<cfset params.user['userCreated'] = createODBCDateTime(now()) />
<cfset params.user['userModified'] = createODBCDateTime(now()) />
<cfset user = model("user").new(params.user) />
<cfset user.save() />
</cffunction>
</cfcomponent>
现在,我也在使用我的视图中的表单助手等,如下所示:
<cfparam name="user" />
<cfoutput>
#startFormTag( action="create" )#
<fieldset>
<legend>Register</legend>
#textField( label="User Name http://#cgi.server_name#/user/", objectName="user", property="userName" )#
#textField( label="Email Address", objectName="user", property="userEmail" )#
#textField( label="Password", objectName="user", property="userPassword" )#
#submitTag( value="Register" )#
</fieldset>
#endFormTag()#
</cfoutput>
#startFormTag(action=“create”)#
登记
#textField(label=“User Name http://#cgi.server_Name#/User/”,objectName=“User”,property=“userName”)#
#textField(label=“Email Address”,objectName=“user”,property=“userEmail”)#
#textField(label=“Password”、objectName=“user”、property=“userPassword”)#
#提交人(value=“寄存器”)#
#endFormTag()#
很简单吧?所以我不明白为什么它没有插入。它是否与将我的CFC命名为“user”以及将我的单数名设置为“user”的表命名为“users”有关
当我提交表格时,没有错误。它执行得很好,但是如果我查看数据库,什么都没有
有一件事我想…就是…轮子到底是怎么知道要找哪张桌子的?对此似乎没有任何解释。也许它只是找错了桌子
非常感谢,,
迈克尔
解决了 大家好,这是为可能遇到此问题的其他人提供的更新。没有发生任何事情的原因是,我的数据库表要求某些字段不为null。CFWheels没有抛出任何错误。一旦我将值传递给这些字段,就可以了;所以一定要检查一下
希望能有所帮助。迈克尔,首先我建议您将控制器重命名为Users.cfc(复数) 在Wheels(和Rails以及配置框架上的其他类似约定)中,模型是单数的(User.cfc),而控制器和表是复数的(Users.cfc)。你的代码看起来都很可靠,唯一让我吃惊的是你的控制器被标注为“User.cfc” 我可以在创建/更新控制器方法中执行以下操作:
if (user.save()){
flashInsert(success="The user was created successfully.");
redirectTo(action="index");
} else {
flashInsert(error="There was an error creating the user.");
renderPage(action="new");
}
user.save()将返回一个布尔值,此条件允许您在出现错误且保存失败时执行一些实际的错误处理/调查
关于Wheels如何知道要查找哪个表的问题,Wheels是按照惯例这样做的。[在这里解释它是如何工作的]它会检查您的模型,对于每个模型,它会检查您的数据库中是否存在多元化版本。因此,如果有一个名为“User”的模型,那么Wheels将期望有一个名为“Users”的表 迈克尔
排除模型对象函数故障的第一步通常是转储results allErrors()方法。尝试保存后立即添加此行
<cfdump var=user.allErrors() label="User Save Errors" abort />
MC是否应该将
userUuid
作为主键?这可能会导致其他问题。能否使用“用户”表的详细定义更新您的问题?UUID不是主键字段。我把它作为将来使用的东西放进去。主键是一个自动递增字段。这个表很好,因为我可以用一个常规的CFQUERY插入,很好。嗨,我刚刚尝试了这个,它没有显示任何错误。奇怪!如果有什么不同的话,我会使用Railo。这种方法非常适合。当验证失败时,控制盘不会“抛出”错误,而是在对象实例中记录错误。然后由您使用此方法向用户报告错误。