1

我这样调用 entityLoad:

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

如何检查 entityLoad 是否返回了记录?如果过滤条件匹配,则返回一个对象。如果不匹配,则不返回任何内容,并且变量 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;
}
4

2 回答 2

6

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

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

更新:虽然isDefined()structKeyExists()可能有效,isNull()实际上是用于检查是否entityLoad()找到任何东西的功能。事实上,在 CF9 中引入它只是为了做到这一点。

于 2012-12-10T04:40:51.563 回答
2

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

于 2012-12-10T04:55:19.657 回答