<ModelName>.class.php
Cuoldの誰かがDoctrineの自動生成ファイルとの違いを説明してくれます<ModelName>Table.class.php
か?たとえば、Jobeetチュートリアルには、JobeetJob.class.phpとJobeetJobTable.class.phpがあります。
各ファイルの役割と、モデルクラスのメソッドをどこに配置する必要があるのかがわかりません。
<ModelName>.class.php
Cuoldの誰かがDoctrineの自動生成ファイルとの違いを説明してくれます<ModelName>Table.class.php
か?たとえば、Jobeetチュートリアルには、JobeetJob.class.phpとJobeetJobTable.class.phpがあります。
各ファイルの役割と、モデルクラスのメソッドをどこに配置する必要があるのかがわかりません。
XXX.class ファイルは Doctrine_Record の子孫を保持します。これは、単一のレコードを操作することを目的としています。保存、作成、編集等。たとえば、レコードを検索します。
Modelname.class.php ファイルには、Post などのコンテナ クラスが含まれています。このクラスには、Post テーブルなど、テーブル内の 1 つの行のすべてのメソッドとプロパティがあります。テーブルに id、text などの列がある場合は、Post クラスを介してそれらにアクセスできます。
ただし、PostTable (または XxxxxTable クラス) はテーブル参照です。つまり、このクラスは、データをフェッチするためにテーブルをクエリする必要があります。
簡単な例を挙げましょう。テーブルから 1 つの投稿を取り出して編集したいとします。
まず、$post = Doctrine::getTable('Post')->findOneById(1);
特定のテーブルからいくつかのデータを取得する必要があるため、これはテーブル クラスから行われます。
これで、(Post オブジェクトのように) 投稿ができました。これ->findOneById(...)
は、データベースにクエリを実行したためです。次に、たとえば で編集できます$post->title = "a nice title"
。最後に、投稿を で保存します$post->save();
。
これに対する例外は、投稿への返信など、関連するオブジェクトを取得する場合です。これは、すでに引き出したオブジェクトを通じて行われます$post
。
私の主張が明確になれば幸いです。そうでない場合は、遠慮なくさらに質問してください。