[php] Warum kann ich kein Doctrine-Modell mit dem Namen "Album" erstellen?



Answers

Das Problem liegt in der Autoloading-Reihenfolge der Modellklassen.

Generierte "Base" -Modelle leben unter dem Verzeichnis "models / generated" und die anderen im obigen Verzeichnis.

Die Ladereihenfolge kann nicht garantiert werden, daher wird ein Modell manchmal vor dem Basismodell geladen, auf dem es sich erstreckt und diesen Fehler verursacht.

In meiner Bootstrap-Datei habe ich jetzt explizit die Ladereihenfolge der Verzeichnisse wie folgt eingefügt:

Doctrine::loadModels(array(APPPATH.'/models/generated', APPPATH.'/models'));

Die Dokumentation verwendet viele Beispiele, die zu generierten Dateien führen, erwähnt dieses Verhalten jedoch nicht, wenn es um Bootstrap-Konfigurationen geht.

Wie auch immer, glücklich, das ist jetzt behoben! :-)

Question

Ich verwende Doctrine als ORM in meinem Projekt, lief aber gegen einen seltsamen Fehler:

Mit folgenden YAML:

Album:
  tableName: dpp_album
  actAs: [Timestampable]
  columns:
    name: string(255)
    description: string(255)
    online: boolean

Ich erzeuge dann meine Modelle, aber nachdem ich meine Seite aktualisiert und die Modelle automatisch geladen habe, bedient PHP diesen Fehler:

Schwerwiegender Fehler: Die Klasse 'BaseAlbum' wurde in E: \ sites \ dpp \ system \ application \ models \ Album.php in Zeile 13 nicht gefunden

Seltsamerweise sind alle meine anderen Modelle gut und die Basisklassen sind in diesen Fällen zu finden.

Wenn Sie den Namen "Album" in "Set" ändern, funktioniert es einfach! Ist das nicht seltsam ?!

Es scheint also, dass die Verwendung von 'Album' in Konflikt gerät, obwohl die Fehlermeldung etwas anderes vorschlägt. Wechsel zu den Plural Alben funktioniert auch nicht, alles andere ist in Ordnung!

Irgendwelche Vorschläge?

Vielen Dank!




Related