0

私のphpプロジェクトでdoctrine ORMを使用しています。
教義はデータベースからオブジェクト(そのテーブル)をどのように取得するのだろうか?

  • そのオブジェクトの関連するすべての結合を取得するので、関連するすべてのオブジェクトを取得しますか? $authorが$articleと関連付けられているとし
    ます。article テーブルを取得しますか?$author = $authorRepository->find($id)

  • そのオブジェクトの結合の結合をフェッチしますか?

ORM オブジェクトのダンプを行ったときに、この疑問に直面しました。その関連タイトルをすべて見ました。例: $author の教義ダンプ:

object(stdClass)#1212 (4) {
  ["__CLASS__"]=>
    string(6) "author"
  ["ID"]=>
    int(12)
  ["num"]=>
    int(6059996)
  ["CreateTimestamp"]=>
    int(1316602238)
  ["articles"]=>
    array(3) {
      [0]=>
        string(7) "article"
      [1]=>
        string(7) "article"
      [2]=>
        string(7) "article"
    }
}
4

1 に答える 1

3

教義はデータベースからオブジェクト(そのテーブル)をどのように取得するのだろうか?

基本的にData Mapper Patternを使用します。

そのオブジェクトの関連するすべての結合を取得するので、関連するすべてのオブジェクトを取得しますか? そのオブジェクトの結合の結合をフェッチしますか?

いいえ、そうではありません。DQLクエリ ビルダー、またはネイティブ SQLを使用して指定しない限り、 .

リポジトリ内に 1 つのオブジェクトを取得する場合は、次のように言います$author = $authorRepository->find($id)。1 つのテーブルからのみフェッチします (クラス テーブルの継承を除く) 。

次に、$authorオブジェクトにリレーションシップを取得するように要求すると、たとえば、$author->getBooks();事前に指定せずに (DQL/SQL と結合して) 、仮想プロキシ パターンによって実現される遅延読み込みが使用され、データを取得するために別の個別のクエリが実行されます。

于 2012-08-29T01:57:53.663 に答える