You are on page 1of 15

Laravel Conference 2019.2.

16

Laravelの公式には載っていない
Builderの使い方
株式会社Nextat
西澤 裕也

2019/2/16 Copyright© Nextat Inc. All Rights Reserved.


アジェンダ
■ 自己紹介
■ Builderとは
■ 公式に使い方が載っていないメソッド
■ まとめ

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 2


自己紹介
#名前
西澤裕也 Yuya Nishizawa

#所属 
株式会社Nextat(ネクスタット)/代表取締役

#経歴
大学生 → ニート → 代表取締役(エンジニア)

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 3


Builderとは

・Illuminate\Database\Query\Builder

SQLを組み立てるためのクラス

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 4


Builderとは
・Illuminate\Database\Eloquent\Builder

Modelに最適化された、ビルダークラス
返り値はIlluminate\Database\Eloquent\CollectionかModelクラ
スになる
EloquentビルダーはQueryビルダーを内部に保持している
Eloquentビルダーにないメソッド(having等)は、Queryビルダー
に委譲されていて、Queryビルダーのメソッドは使うことができる

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 5


公式に使い方が載っていないメソッド

・findOrNew($id, $columns = [ * ]): Model

Modelが見つからない場合はModelのインスタンスを返してくれる

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 6


公式に使い方が載っていないメソッド

・hydrate(array $items): EloquentCollection

配列を渡すと、Modelインスタンスにセットして返してくれる

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 7


公式に使い方が載っていないメソッド

・hydrate(array $items): EloquentCollection


Requestクラスで下記のような配列で入れてあげると便利

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 8


公式に使い方が載っていないメソッド
・toSql()

SQL文として表示してくれる

・getBindings()

プレースホルダーに入ってくる値が確認できる
2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 9
公式に使い方が載っていないメソッド

・便利な使い方
toSql()とgetBindings()を合わせると完全なSQL文を見る
ことが可能

さくっと確認したいときはとても便利!

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 10


まとめ

■ Eloquentビルダーにないメソッド(having等)は、Queryビルダー
に委譲されていて、Queryビルダーのメソッドは使うことができる

■ findOrNew(),hydrate(),toSql(),getBindings()の使い方の説明

2019/2/16 Copyright© Nextat Inc. All Rights Reserved.


まとめ

■ Laravelの公式ドキュメントは簡単なこと
しか載っていない

■ チュートリアルが雑でよくわからない

2019/2/16 Copyright© Nextat Inc. All Rights Reserved.


まとめ

■ なんてことはなかった(笑)

2019/2/16 Copyright© Nextat Inc. All Rights Reserved.


まとめ

■ 公式には色々なBuilderの使い方が書いているの
で一読する価値あり!

https://readouble.com/laravel/5.7/ja/queries.html

https://readouble.com/laravel/5.7/ja/eloquent.html

https://readouble.com/laravel/5.7/ja/eloquent-
relationships.html

2019/2/16 Copyright© Nextat Inc. All Rights Reserved.


ご清聴ありがとうございました

2019/2/16 Copyright© Nextat Inc. All Rights Reserved. 15

You might also like