7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】find()とfindOrFail()の違い

Last updated at Posted at 2021-09-03

find()とfindOrFail()とは

Laravelで提供されているデータ操作の為の機能であるEloquent ORMのメソッドのひとつ。指定したidのレコードを取得することができる。

2つのメソッドの違い

定義の仕方

find()

$flight = App\Flight::find(1);

findOrFail()

$flight = App\Flight::findOrFail((1);

idが見つからなかったとき

  • find():nullを返す。
  • findOrFail():エラー(404HTTPレスポンス)を返す。例外処理。

どちらを使うべきか

findOrFail()の方が良い(と思う)

  • 見つからなかった時に、nullかエラーか、どっちを出したいかで決めると良い。

find()

  • 全然違う場所にエラーが出てしまい、原因を見つけることが難しい。
  • コントローラーでid番号を探すクエリを出したのに、エラー画面では、Viewファイルでエラーがあると出てしまう。

findOrFail()

  • 詳細なエラーが原因がわからないことがデメリット。
  • ユーザーにエラー画面を見せたくないときはこっち。

ただし…

  • 「find()でnullが出たら〇〇する」のような、if文、条件分岐を続けて使うのであれば、find()を使った方が、条件分岐を書きやすい。
  • 仮にfind()を使ってても、.envファイルを開いて、APP_DEBUGをtrueからfalseに書き換えれば、同じように、404 | Not Foundが表示されるようになる。

参考記事

7
5
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
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?