Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Eloquent Modelと親和性の高い オブジェクトを作る
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hiroshi sanbou
July 26, 2017
Programming
0
340
Eloquent Modelと親和性の高い オブジェクトを作る
hiroshi sanbou
July 26, 2017
Tweet
Share
Other Decks in Programming
See All in Programming
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
150
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.7k
React Native × React Router v7 API通信の共通化で考えるべきこと
suguruooki
0
100
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
Oxlintはいいぞ
yug1224
5
1.4k
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
230
Data-Centric Kaggle
isax1015
2
780
今から始めるClaude Code超入門
448jp
8
9.1k
Package Management Learnings from Homebrew
mikemcquaid
0
230
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
100
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
180
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
The Spectacular Lies of Maps
axbom
PRO
1
530
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
200
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
Optimising Largest Contentful Paint
csswizardry
37
3.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Mind Mapping
helmedeiros
PRO
0
90
Agile that works and the tools we love
rasmusluckow
331
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Designing Experiences People Love
moore
144
24k
Transcript
Eloquent Modelと親和性の高い オブジェクトを作る
©2016 株式会社Loco Partners 自己紹介 名前 sanbou hiroshi 所属 Loco Partners
仕事 宿泊予約サイト「Relux」のサーバーサイドエンジニア CakePHP・Laravel
©2016 株式会社Loco Partners やりたいこと Reluxの部屋と料金の扱い 部屋 部屋料金 在庫 料金内訳 DBから取得
アプリケーション で算出
©2016 株式会社Loco Partners やりたいこと DBに依存するモデルのリレーションは簡単 部屋 部屋料金 在庫 料金内訳 DBから取得
アプリケーション で算出
©2016 株式会社Loco Partners やりたいこと これだけ
©2016 株式会社Loco Partners やりたいこと 検索条件とDBから取得した料金からアプリケーションで算出 部屋モデルの属性として扱いたい 部屋 部屋料金 在庫 料金内訳
DBから取得 アプリケーション で算出
©2016 株式会社Loco Partners やりたいこと 料金内訳オブジェクト
©2016 株式会社Loco Partners やりたいこと DB依存のオブジェクト と DBに依存しないオブジェクト を まとめて扱いたい
©2016 株式会社Loco Partners やりたいこと $room->estimate $rooms->toArray()
©2016 株式会社Loco Partners やりたいこと Eloquent Modelクラスから 結合に必要な部分を抽出した基底クラスを作る
©2016 株式会社Loco Partners Eloquent Modelのデータ構造
©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Attributes と Relations
©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Attributes:モデルのデータを集約したプロパティ
©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Attributesを管理するTrait ・Attributesを扱える ・Attributesの型の保証ができる ・Mutatorを使える
©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Relations:モデル間の結合関係
©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Relationsを管理するTrait ・モデル間の結合関係を配列で保持 ・結合先のモデルを参照、操作できる
©2016 株式会社Loco Partners Eloquent Modelの実装
©2016 株式会社Loco Partners Eloquent Modelの実装 Attributesを扱えるようにする
©2016 株式会社Loco Partners Eloquent Modelの実装 Relationsを扱えるようにする
©2016 株式会社Loco Partners Eloquent Modelの実装 シリアライズ対象のAttributesをカスタマイズできる
©2016 株式会社Loco Partners Eloquent Modelの実装 toArray() を保証する
©2016 株式会社Loco Partners 完成 基底クラス
©2016 株式会社Loco Partners 完成 基底クラス
©2016 株式会社Loco Partners 完成 基底クラス
©2016 株式会社Loco Partners 完成 モデルとの結合
©2016 株式会社Loco Partners 完成 $room->estimate $rooms->toArray()
©2016 株式会社Loco Partners 完成 Reluxの部屋と料金をまとめて扱えるように 部屋 部屋料金 在庫 料金内訳
None