Slide 1

Slide 1 text

Eloquent Modelと親和性の高い オブジェクトを作る

Slide 2

Slide 2 text

©2016 株式会社Loco Partners 自己紹介 名前  sanbou hiroshi 所属  Loco Partners 仕事  宿泊予約サイト「Relux」のサーバーサイドエンジニア  CakePHP・Laravel

Slide 3

Slide 3 text

©2016 株式会社Loco Partners やりたいこと Reluxの部屋と料金の扱い 部屋 部屋料金 在庫 料金内訳 DBから取得 アプリケーション で算出

Slide 4

Slide 4 text

©2016 株式会社Loco Partners やりたいこと DBに依存するモデルのリレーションは簡単 部屋 部屋料金 在庫 料金内訳 DBから取得 アプリケーション で算出

Slide 5

Slide 5 text

©2016 株式会社Loco Partners やりたいこと これだけ

Slide 6

Slide 6 text

©2016 株式会社Loco Partners やりたいこと 検索条件とDBから取得した料金からアプリケーションで算出 部屋モデルの属性として扱いたい 部屋 部屋料金 在庫 料金内訳 DBから取得 アプリケーション で算出

Slide 7

Slide 7 text

©2016 株式会社Loco Partners やりたいこと 料金内訳オブジェクト

Slide 8

Slide 8 text

©2016 株式会社Loco Partners やりたいこと DB依存のオブジェクト と DBに依存しないオブジェクト を まとめて扱いたい

Slide 9

Slide 9 text

©2016 株式会社Loco Partners やりたいこと $room->estimate $rooms->toArray()

Slide 10

Slide 10 text

©2016 株式会社Loco Partners やりたいこと Eloquent Modelクラスから 結合に必要な部分を抽出した基底クラスを作る

Slide 11

Slide 11 text

©2016 株式会社Loco Partners Eloquent Modelのデータ構造

Slide 12

Slide 12 text

©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Attributes と Relations

Slide 13

Slide 13 text

©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Attributes:モデルのデータを集約したプロパティ

Slide 14

Slide 14 text

©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Attributesを管理するTrait ・Attributesを扱える ・Attributesの型の保証ができる ・Mutatorを使える

Slide 15

Slide 15 text

©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Relations:モデル間の結合関係

Slide 16

Slide 16 text

©2016 株式会社Loco Partners Eloquent Modelのデータ構造 Relationsを管理するTrait ・モデル間の結合関係を配列で保持 ・結合先のモデルを参照、操作できる

Slide 17

Slide 17 text

©2016 株式会社Loco Partners Eloquent Modelの実装

Slide 18

Slide 18 text

©2016 株式会社Loco Partners Eloquent Modelの実装 Attributesを扱えるようにする

Slide 19

Slide 19 text

©2016 株式会社Loco Partners Eloquent Modelの実装 Relationsを扱えるようにする

Slide 20

Slide 20 text

©2016 株式会社Loco Partners Eloquent Modelの実装 シリアライズ対象のAttributesをカスタマイズできる

Slide 21

Slide 21 text

©2016 株式会社Loco Partners Eloquent Modelの実装 toArray() を保証する

Slide 22

Slide 22 text

©2016 株式会社Loco Partners 完成 基底クラス

Slide 23

Slide 23 text

©2016 株式会社Loco Partners 完成 基底クラス

Slide 24

Slide 24 text

©2016 株式会社Loco Partners 完成 基底クラス

Slide 25

Slide 25 text

©2016 株式会社Loco Partners 完成 モデルとの結合

Slide 26

Slide 26 text

©2016 株式会社Loco Partners 完成 $room->estimate $rooms->toArray()

Slide 27

Slide 27 text

©2016 株式会社Loco Partners 完成 Reluxの部屋と料金をまとめて扱えるように 部屋 部屋料金 在庫 料金内訳

Slide 28

Slide 28 text

No content