Symfony-Unterschied zwischen ModelName.class.php und ModelNameTable.class.php

9

Kann mir jemand den Unterschied zwischen den automatisch generierten Doctrine-Dateien <ModelName>.class.php und <ModelName>Table.class.php erklären? Zum Beispiel gibt es im Jobeet-Tutorial JobeetJob.class.php und JobeetJobTable.class.php .

Ich verstehe nicht die Rolle jeder Datei und wo ich Methoden für die Modellklasse einfügen muss.

    
ArR4y 03.11.2009, 15:10
quelle

2 Antworten

3
Die Datei

​​XXX.class enthält den Nachkommen Doctrine_Record, der für einen einzelnen Datensatz verwendet werden soll. Speichern, erstellen, bearbeiten etc. XXXTable.class.php enthält Doctrine_Table-Nachfolger, der für eine ganze Tabelle arbeiten soll. Zum Beispiel nach Datensätzen suchen.

    
Vladislav Rastrusny 03.11.2009 15:28
quelle
2

Ihre Datei Modelname.class.php enthält die Containerklasse, z. B. Post. Diese Klasse enthält alle Methoden und Eigenschaften einer Zeile in Ihrer Tabelle, z. B. die Post-Tabelle. Wenn Sie in der Tabelle Spalten wie ID, Text usw. haben, können Sie über die Post-Klasse darauf zugreifen.

Ihre PostTable-Klasse (oder XxxxxTable-Klasse) ist jedoch die -Tabelle -Referenz, was bedeutet, dass diese Klasse für die Abfrage der Tabelle zum Abrufen der Daten zuständig sein sollte.

Lassen Sie mich ein kurzes Beispiel geben. Nehmen wir an, Sie möchten einen einzelnen Beitrag aus der Tabelle herausholen und dann bearbeiten.

Zuerst würden Sie $post = Doctrine::getTable('Post')->findOneById(1); machen. Dies wird von der Tabellenklasse gemacht, weil Sie einige Daten aus einer bestimmten Tabelle herausziehen wollen.

Nun haben Sie Ihren Post (wie in einem Post-Objekt), weil ->findOneById(...) die Datenbank für Sie abgefragt hat. Dann kannst du das bearbeiten, zum Beispiel mit $post->title = "a nice title" . Speichern Sie Ihren Post schließlich mit $post->save(); .

Ausgenommen davon sind verwandte Objekte, bei denen es sich beispielsweise um Antworten auf Ihren Post handeln könnte. Dies würde durch das Objekt geschehen, das Sie bereits nach $post herausgezogen haben.

Ich hoffe, ich habe meinen Standpunkt deutlich gemacht - wenn nicht, zögern Sie bitte nicht, weitere Fragen zu stellen.

    
phidah 03.11.2009 16:03
quelle

Tags und Links