SlideShare a Scribd company logo
1 of 12
Download to read offline
モデル間のリレーション
  FuelPHP 勉強会東京 vol.2
        2012/09/23

      @web2citizen
Modelクラスで設定
Modelクラスで設定




   親モデル変更時に子モデルも変更
親の変更が子にも反映される
cascade_save = true なら




cascade_delete = true なら


cascade_saveは勝手に悪さをすることはないので
true推奨、cascade_deleteをtrueにする時は注意
リレーションの張り方は4種類
1. Belongs to
   ○ 子モデル側から参照元となる親モデルを設定する
2. Has One
   ○ 一対一の関係となる子モデルを設定する
3. Has Many
   ○ 一対多の関係となる子モデルを設定する
4. Many to Many
   ○ 中間テーブルを使用して多対多の関係を設定する
Many to Many の設定方法
キー情報だけを定義した中間テーブルを作成


モデルで設定
Controller, View での記述
Controller




View
表示できた!
でもクエリを確認すると・・・




親レコード1件ずつにクエリが実行されている!
対処方法
find時にリレーションを引数で渡してやると・・・
結果確認




すっきり!
Lazy Loding と Eager Loading
● Lazy Loading
  ○ 必要になるまで読み込みを行わない
  ○ Controller で User を find('all') しても子の Profile が必
    要かわからなかったので、ロードしなかった
  ○ View で $user->profile と呼び出しがかかったので、その
    都度呼び出しを行った結果大量のクエリが生成された。
● Eager Loading
  ○ 必要になる前に一括で読み込んでしまう
  ○ User の find('all') 時にリレーションの読み込みを行った
    ため、子のProfileも含めて1クエリですべて取得できた

More Related Content

Viewers also liked (9)

CakePHP vs FuelPHP
CakePHP vs FuelPHPCakePHP vs FuelPHP
CakePHP vs FuelPHP
 
FuelPHPをさわってみて
FuelPHPをさわってみてFuelPHPをさわってみて
FuelPHPをさわってみて
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHP
 
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
 
フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravel
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 

Fuel php勉強会東京vol2 発表資料_モデル間リレーション