2012-04-11 5 views
1

とは対照的に、一般的なCFMLロジックを含むことができ、私は私のメソッドを持っていますgetStatusLabel()というモデルで、渡されるステータスに応じて「アクティブ」または「リタイア」を返します。CF9 ORM計算列 - それは私の永続的なモデルが0または1</p> <p>ことができる「ステータス」フィールドを持つメソッドを呼び出す、またはSQL

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

計算された列としてセットアップすることができればいいと思っていましたが、これを行う方法はあまり考えられません。すべての計算列の例には、式としてSQL文があります。

この(または別の)メソッドを私の式として呼び出すことは可能ですか(私のモデルを介してアクセスしやすくする)か、あるいはその式をSQL文にする必要がありますか?

また、メソッドの論理を「式」としてそのまま含めることもできます。

私はどちらかを試みると、エラーが発生します:Could not initialize collectionこれを行うことはできませんが、可能ならば華麗になります。

多くの方々、ありがとうございます!

ジェイソン

答えて

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"; 
} 

あなたがその機能を使用する場合は、単に地元のステータスプロパティを参照する、という作業を行いますあなたが期待するように?

+0

ありがとうございました。乾杯 – Jason

関連する問題