1

私の永続モデルには「ステータス」フィールドがあり、0または1にすることができます。

モデルにgetStatusLabel()というメソッドがあります。このメソッドは、渡されるステータスに応じて、「アクティブ」または「リタイア」を返します。

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メソッドに、オブジェクトを引数として渡さずにオブジェクトのstatusプロパティを使用させることができます。

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

ローカルステータスプロパティを参照するだけでその関数を使用する場合、それは期待どおりに機能しますか?

于 2012-04-11T12:28:06.490 に答える