1

我的 Persistant 模型有一个“状态”字段,可以是 0 或 1。

我的模型中有一个名为 getStatusLabel() 的方法,它返回“Active”或“Retired”,具体取决于传递给它的状态。

public function getStatusLabel(required status){
        if (status eq 1)
            return "Active";
        else if (status eq 0)
            return "Retired";
    }

我认为如果可以将其设置为计算列会很棒,但不能完全考虑如何做到这一点。所有计算列示例都有一个 SQL 语句作为公式。

是否可以将此(或其他)方法称为我的公式(通过我的模型更容易访问),或者公式是否需要是 SQL 语句?

或者,可以将方法的逻辑直接包含在“公式”中。

当我尝试任何一个时,我都会遇到错误:Could not initialize collection所以猜测这是不可能的,但如果可以的话,那就太好了,所以值得一问。

提前谢谢了!

杰森

4

1 回答 1

0

如果您在 SQL Server 中使用计算列,则可以将列定义设置为:

CASE WHEN status = 1 THEN 'Active' ELSE 'Retired' END

将列设置为持久化,这样就不必在每个查询中计算它,然后您应该能够在 ORM 中使用它。只要确保它被标记为不可更新或不可插入。

此外,您可以让 getStatusLabel 方法使用对象的状态属性,而无需将其作为参数传入:

public function getStatusLabel(){
    if (this.status eq 1)
        return "Active";
    else if (this.status eq 0)
        return "Retired";
}

如果您使用该函数,仅引用本地状态属性,它会按您的预期工作吗?

于 2012-04-11T12:28:06.490 回答