1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【laravel】検索機能作りたい時にwhen()メソッドがめっちゃ楽な件について

Posted at

はじめに

検索機能を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って本当に簡単。
何やっても楽に早く完結に実装できるためめちゃくちゃ好きなフレームワークの一つ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?