Your SlideShare is downloading. ×
0
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

15,792

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
15,792
On Slideshare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
5
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. モデル間のリレーション FuelPHP 勉強会東京 vol.2 2012/09/23 @web2citizen
  • 2. Modelクラスで設定
  • 3. Modelクラスで設定 親モデル変更時に子モデルも変更
  • 4. 親の変更が子にも反映されるcascade_save = true ならcascade_delete = true ならcascade_saveは勝手に悪さをすることはないのでtrue推奨、cascade_deleteをtrueにする時は注意
  • 5. リレーションの張り方は4種類1. Belongs to ○ 子モデル側から参照元となる親モデルを設定する2. Has One ○ 一対一の関係となる子モデルを設定する3. Has Many ○ 一対多の関係となる子モデルを設定する4. Many to Many ○ 中間テーブルを使用して多対多の関係を設定する
  • 6. Many to Many の設定方法キー情報だけを定義した中間テーブルを作成モデルで設定
  • 7. Controller, View での記述ControllerView
  • 8. 表示できた!
  • 9. でもクエリを確認すると・・・親レコード1件ずつにクエリが実行されている!
  • 10. 対処方法find時にリレーションを引数で渡してやると・・・
  • 11. 結果確認すっきり!
  • 12. Lazy Loding と Eager Loading● Lazy Loading ○ 必要になるまで読み込みを行わない ○ Controller で User を find(all) しても子の Profile が必 要かわからなかったので、ロードしなかった ○ View で $user->profile と呼び出しがかかったので、その 都度呼び出しを行った結果大量のクエリが生成された。● Eager Loading ○ 必要になる前に一括で読み込んでしまう ○ User の find(all) 時にリレーションの読み込みを行った ため、子のProfileも含めて1クエリですべて取得できた

×