Warum erhalte ich „Validator nicht bestanden“ ein ein mit Lehre auf Symfony 1.2 zu retten?
Frage
Lassen Sie uns sagen, dass ich YAML Schema haben suchen wie folgt aus:
Note:
options:
type: MyISAM
collate: utf8_unicode_ci
charset: utf8
actAs: { Timestampable: ~ }
columns:
content: { type: string, notnull: true}
order_id: int(5)
user_id : int
relations:
User:
foreignAlias: Notes
local: user_id
foreign: id
type: one
foreignType: man
onDelete: CASCADE
Bei der Durchführung:
$note->setOrderId(0);
$note->save();
Ich erhalte die folgende Fehlermeldung:
1 validator failed on order_id (type)
MySQL Speicher ORDER_ID als bigint (20).
Ich bin mit Ubuntu 9.10, Symfony 1.2, PHP 5 und MySQL 5.
EDIT:
einen Hinweis erhalten, wenn ich alle Hinweise auf die Größe in der YAML-Datei entfernen, erhalte ich einen zweiten Validierungsfehler für order_id (Länge): -)
Lösung
Ich habe es. Ersetzen „int“ durch „integer“ und von der Größe loszuwerden hat den Trick. Nun ist die YAML-Datei wie folgt aussieht:
Note:
options:
type: MyISAM
collate: utf8_unicode_ci
charset: utf8
actAs: { Timestampable: ~ }
columns:
content: { type: string, notnull: true}
order_id: integer
user_id : integer
relations:
User:
foreignAlias: Notes
local: user_id
foreign: id
type: one
foreignType: man
onDelete: CASCADE
Ich hat versucht, dass, weil andere Leute auf dem Netz ähnlichen Fehler hatten, gelöst zu ersetzen „varchar“ mit „string“.
Wenn jemand in dem stecken und diese Antwort lesen, ein Bier in ihrem Namen: -)
Andere Tipps
Ich weiß, das ist alt ...
Ich dachte nur, ich könnte, dass gültige Lehre klären Typen "integer", "string", "float", "dezimal", "Objekt", "clob", "blob", "Enum", "Array" sind.
Lehre übersetzt dann die Lehre Art in den richtigen Datenbanktyp für das gewählte Backend.
Das ist, warum "int" den Typ-Validator ist fehlgeschlagen, aber "integer" funktioniert.