Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion CFWheels-未插入记录_Coldfusion_Cfc_Railo_Cfwheels - Fatal编程技术网

Coldfusion CFWheels-未插入记录

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

一般来说,我不熟悉CFWheels和框架

我正在关注Wheels网站上的屏幕广播:

我完全按照教程的内容进行操作……唯一的区别是,他的表名为“people”,而我的表名为“users”。我做了相应的改变,但其他一切都保持不变

他的单数是“person”,我的单数是“user”

以下是我的“User.cfc”控制器中的插入代码:

<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。这种方法非常适合。当验证失败时,控制盘不会“抛出”错误,而是在对象实例中记录错误。然后由您使用此方法向用户报告错误。