检查带有filtercriteria的entityLoad是否返回了结果

时间:2012-12-10 04:29:39

标签: coldfusion coldfusion-9

我正在调用entityLoad:

currentSubmission =  entityload("EventSubmission", { eventID = variables.eventID, profileID = variables.profileID, true }

如何检查entityLoad是否已返回记录?如果filtercriteria上存在匹配项,则返回Object。如果没有匹配项,则不返回任何内容,并且变量currentSubmission不存在。

我发现的问题是,如果我使用:

一个。 isObject(currentSubmission),在没有返回任何内容时给出错误,因为currentSubmission不存在。

湾isDefined(currentSubmission),在返回某些内容时给出错误,因为您无法在对象上执行isDefined。

问题是,我应该使用什么方法来确定entityLoad是否返回了结果?

这是我试图整理的完整方法。基本上,我想基于某些过滤条件加载实体并返回它,如果没有匹配的实体,则返回一个新的Empty实体。

public function getByEventProfile(){
    currentSubmission =  entityload("EventSubmission", { eventID = variables.eventID, profileID = variables.profileID }, true);
    if (!isObject(currentSubmission))
        currentSubmission = entityNew("EventSubmission");
    return currentSubmission;
}

2 个答案:

答案 0 :(得分:6)

isNull()是您正在寻找的功能。

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSe9cbe5cf462523a0-3c4c0bb81223f1daffb-8000.html

更新虽然isDefined()structKeyExists()可能有用,但isNull()事实上的函数,用于检查{{1}发现了什么。事实上,它只是为了做到这一点而在CF9中引入。

答案 1 :(得分:2)

尝试isDefined("currentSubmission")(注意引号)或略快structKeyExists(variables,"currentSubmission")