1. ホーム
  2. php

[解決済み] find(), findOrFail(), first(), firstOrFail(), get(), list(), toArray() の違いは何ですか?

2022-02-19 21:23:30

質問

これらの方法の違いは何ですか。

  1. find()
  2. findOrFail()
  3. first()
  4. firstOrFail()
  5. get()
  6. list()
  7. toArray()

使ってみて、それぞれ違った結果が得られるので、時には toArray() の末尾にある get() というのも、私の関数は配列を期待しているからです。他のメソッドも同様に配列を生成しないのでしょうか?

どのように解決するのですか?

  1. find($id) は、id を受け取り、単一のモデルを返します。一致するモデルが存在しない場合、それは null .

  2. findOrFail($id) は、id を受け取り、単一のモデルを返します。一致するモデルが存在しない場合、エラーを投げます。 1 .

  3. first() は、データベースで見つかった最初のレコードを返します。マッチするモデルが存在しない場合、それは null .

  4. firstOrFail() は、データベースで見つかった最初のレコードを返します。一致するモデルが存在しない場合、エラーを投げます。 1 .

  5. get() は、クエリにマッチするモデルのコレクションを返します。

  6. pluck($column) は、指定されたカラムの値だけのコレクションを返します。Laravelの以前のバージョンでは、このメソッドは lists .

  7. toArray() は、モデル/コレクションをシンプルな PHP 配列に変換します。


コレクション は、より強化された配列です。機能は配列とほぼ同じですが、多くの機能が追加されています。 ドキュメント .

残念ながら、PHP では、配列が使える場所ならどこでもコレクションオブジェクトを使えるというわけではありません。たとえば、コレクションを foreach ループに渡すのは良いのですが、それを array_map はありません。同様に、もしあなたが引数を array の場合、PHP はコレクションを渡すことを許しません。PHP 7.1 以降は iterable タイプヒント これは、配列とコレクションの両方を受け入れるために使用することができます。

コレクションからプレーンな配列を取得したい場合は、そのコレクションの all() というメソッドがあります。


1 が投げるエラーは findOrFailfirstOrFail メソッドは ModelNotFoundException . この例外を自分でキャッチしない場合。 Laravelは404で応答します。 これは、ほとんどの場合、あなたが望むことです。