5965


Modelに_belongs_toのリレーションの設定をして、findした場合に、勝手にリレーションされた結果が返ってきました。ドキュメントにはrelatedで呼び出す様に書かれています。

なぜ自動的にリレーションされたのでしょうか？_belongs_toの場合は自動的に結合されるのでしょうか？

fuelphp 1.6です


CC BY-SA 3.0
2015-02-04T23:58:45.217
5960
2015-02-05T03:04:33.793
2015-02-05T03:04:33.793
3313
2772
question
php fuelphp
【fuelphp】findでリレーションが勝手にされる


[はじめに - Relations - Orm Package - FuelPHP
ドキュメント](http://fuelphp.jp/docs/1.6/packages/orm/relations/intro.html)からの抜粋で回答いたします。

`related`を使った場合は一括読み込みとなります。

[code]

    // eager loading, using joins:
    $post = Model_Post::find('all', array('related' => array('comments')));
    // or
    $post = Model_Post::query()->related('comments')->get();
    // $post->comments is available without any further querying after this
    
[/code]

`related`を使わなくても、`Model`にリレーション(Belongs To, Has One, Has Many, Many to
Many)が設定されている場合、リレーション先のプロパティにアクセスしたときに遅延読み込みされます。

[code]

    // もしくは、遅延読み込みを使ってください。それはリレーションを使用しますが、一度要求されたリレーションを照会しません。
    // 最初の "post"は、結合せずに1クエリを取得します。
    $post = Model_Post::find('first');
    // 自動的にjoinすることなく、別のクエリを実行される、コメントを（まだロードされていない）を要求します。
    $comments = $post->comments;
    
[/code]


CC BY-SA 3.0
2015-02-05T02:37:22.233
5965
2015-02-05T02:37:22.233
3160
5960
answer