はじめに
検索機能をlaravelで実装したい時に、if分岐を連発させたくないなぁ。めっちゃダサいなぁと個人的な謎のこだわりにより、ついに辿り着いたwhen()メソッド。めちゃくちゃ便利すぎたので、忘れないように備忘録として記録しておく。
when()メソッドって何
第一引数が「true」を返したときに、第二引数を実行するlaravelのデフォルトメソッド。
そしてELQUENTでもクエリビルダどちらも使用可能という個人的にめちゃくちゃ便利なメソッド。
whenメソッドを使用すると・・・
TodoService.php
$query = Todo::query();
$name = $request->input('name');
$query->when($name, function($query) use($name) {
$query->where("name", "LIKE", "%{$name}%");
});
return query;
めちゃ簡単。しかもチェーン可能なので項目が増えたらwhen()メソッドて繋いで絞り込みが可能となるので便利だぁ!!
ちなみにif分岐だと・・・
TodoService.php
$query = Todo::query();
$name = $request->input('name');
if ($name) {
$query->where('name', 'LIKE',"%{$name}%");
}
なんかダサいし項目が多くなった時にif分岐連発の予感。
個人的にはフレームワーク使用しているのになかなか許せない。
終わりに
laravelって本当に簡単。
何やっても楽に早く完結に実装できるためめちゃくちゃ好きなフレームワークの一つ。