CakePHP - Standard-Feldwerte im Modell festlegen

8

Wie legen Sie einen Standardwert für ein Feld in einem Modell fest?

BEARBEITEN:

Ich habe die Methode mit _schema wie vorgeschlagen versucht, aber der Standardwert wird nicht verwendet.

%Vor%     
freshest 01.12.2011, 15:51
quelle

5 Antworten

2

Es wäre besser, den Standardwert in der Datenbank zu setzen? Ich sehe nicht wirklich, warum du es CakePHP Seite machen willst ...

    
jwg2s 03.12.2011 00:12
quelle
1

Sie sollten immer versuchen, Standardwerte vom Controller einzustellen: Ссылка

    
mark 01.12.2011 20:45
quelle
1

Da die obigen Vorschläge für mich nicht funktionieren, habe ich meine eigene gefunden. Die Antwort ist der oben beschriebenen sehr ähnlich, aber mit einer kleinen Korrektur. (funktioniert mit CakePHP 2.6.1)

Der Standardwert kann im Controller in add -Funktion gesetzt werden ("request" wird benötigt).

%Vor%

Vollständiger Codebeispiel:

%Vor%

Eine Philosophie:
1) Warum das nötig ist - Wenn wir ein boolesches Attribut in der Datenbank haben, übernimmt das neu erstellte Objekt in CakePHP keine Standardwerte aus der Datenbank. Und wenn wir das Kästchen im Formular zum Hinzufügen des neuen Objekts deaktivieren und an die Datenbank senden, bedeutet dies, dass dieser Attributwert falsch ist (nicht Wert nicht festgelegt )
2) Ist dies ein idealer Ort, um den Standardwert festzulegen? - Nein, das ist kein idealer Ort, da alle Informationen über das Objekt und seine Daten im Modell sein müssen, aber ich habe es nicht geschafft um den Standardwert im Modell zuzuweisen. Sogar mit _schema Variable oder create Funktion.

    
Linas Butenas 01.02.2015 11:40
quelle
1

Sie können den Wert in der Datenbank festlegen und im Schema verwalten, z. B .:

%Vor%

Dieser Standardwert kann später in Modell oder Controller über die schema -Eigenschaft des Modells gelesen werden:

%Vor%

In den letzten PHP-Versionen kann es ein One-Liner sein:

%Vor%

Dies funktioniert in Cake / 2.5 mit MySQL-Adapter (keine Ahnung von anderen Szenarien).

    
Álvaro González 29.12.2016 11:58
quelle
0

-Datenbanken werden groß, sodass Sie sich nicht mehr an alle von Ihnen festgelegten Standardeinstellungen erinnern können. Lass es uns einfach halten:

  1. Sie setzen Standardwerte in der Steuerung (es ist einfach, den Code zu lesen, wenn Standardwerte für bestimmte Aktionen am Anfang als Klasseneigenschaften festgelegt sind).

Zum Beispiel:

%Vor%

Sie können sich nicht immer an die Standardwerte in der Datenbank erinnern, wenn Sie etwa 60-80 Tabellen mit komplizierten Beziehungen haben.

AND

Mein Rat ist, dass Sie keine Standardeinstellungen festlegen, die von Ihren aktuellen Einstellungen abhängen, flexibler sein: Erstellen Sie eine Konfigurationstabelle oder setzen Sie Standardwerte in AppController, um sie blitzschnell zu finden.

    
jakubplus 29.03.2014 14:45
quelle

Tags und Links