2012-04-11 2 views
1

Mein persistierendem Modell einen ‚Status‘ Feld hat, dieCF9 ORM Computed Column - Kann es eine Methode aufrufen oder eine Logik enthalten allgemeine cfml im Gegensatz zu SQL

0 oder 1 sein kann, ich habe eine Methode in meinem Modell namens getStatusLabel(), das "Aktiv" oder "Zurückgezogen" zurückgibt, abhängig davon, welcher Status an es übergeben wird.

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

Ich dachte, es wäre toll, wenn diese Einrichtung als eine berechnete Spalte sein könnte, aber denken kann nicht, wie dies zu tun. Alle berechneten Spaltenbeispiele haben eine SQL-Anweisung als Formel.

Ist es möglich, diese (oder eine andere) Methode als meine Formel aufzurufen (was den Zugriff über mein Modell erleichtert), oder muss die Formel eine SQL-Anweisung sein?

Alternativ ist es möglich, die Logik der Methode direkt in die 'Formel' einzufügen.

Wenn ich entweder versuche, bekomme ich Fehler: Could not initialize collection so raten das kann nicht getan werden, aber wäre brillant, wenn es könnte, so lohnt sich zu fragen.

Vielen Dank im Voraus!

Jason

Antwort

0

Wenn Sie eine berechnete Spalte in SQL Server verwenden, können Sie die Spaltendefinition auf diesen Satz:

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

Stellen Sie die Spalte beibehalten, damit es nicht zu sein braucht berechnet mit jeder Abfrage, und Sie sollten dann in der Lage sein, das in Ihrem ORM zu verwenden. Stellen Sie nur sicher, dass es als nicht aktualisierbar oder einfügbar markiert ist.

Sie können aber auch die getStatusLabel Methode haben die Status-Eigenschaft des Objekts verwenden, ohne sie in als Argument übergeben:

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

Wenn Sie diese Funktion verwenden, verweist nur die lokale Status Eigenschaft, dass die Arbeit tut wie du es erwarten würdest?

+0

Dank Dan .. du bist Vorschlag arbeitete ein Vergnügen! Prost – Jason

Verwandte Themen