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
hiroshi sanbou
July 26, 2017
Programming
0
280
Eloquent Modelと親和性の高い オブジェクトを作る
hiroshi sanbou
July 26, 2017
Tweet
Share
Other Decks in Programming
See All in Programming
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
230
Netty Chicago Java User Group 2024-04-17
sullis
0
140
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
370
本格ローグライク制作にEbitengineを選んでみた
nagainaganawa
0
290
品質とスピードを両立: TypeScriptの柔軟な型システムをバックエンドで活用する
kosui
8
2.2k
Git Rebase
bkuhlmann
11
1.6k
StreamlitとTerraformでデータカタログを作った話
gussan0223
0
310
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
160
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
5
4.6k
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
22
15k
Elm Form Validation
bkuhlmann
0
510
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
Practical Orchestrator
shlominoach
181
9.7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
BBQ
matthewcrist
80
8.7k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Into the Great Unknown - MozCon
thekraken
10
980
Fireside Chat
paigeccino
20
2.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Faster Mobile Websites
deanohume
297
30k
Automating Front-end Workflow
addyosmani
1355
200k
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