これらの方法の違いは何ですか:
find()
findOrFail()
first()
firstOrFail()
get()
list()
toArray()
私はそれらを使用していましたが、それぞれが異なる結果を与え、関数が配列を期待しているため、時々toArray()
の最後にget()
を追加する必要があります。他のメソッドも配列を生成しませんか?
find($id)
はidを受け取り、単一のモデルを返します。一致するモデルが存在しない場合は、null
を返します。
findOrFail($id)
はidを受け取り、単一のモデルを返します。一致するモデルが存在しない場合、エラーがスローされます1。
first()
は、データベースで見つかった最初のレコードを返します。一致するモデルが存在しない場合は、null
を返します。
firstOrFail()
は、データベースで見つかった最初のレコードを返します。一致するモデルが存在しない場合、エラーがスローされます1。
get()
は、クエリに一致するモデルのコレクションを返します。
pluck($column)
は、指定された列の値のみのコレクションを返します。 Laravelの以前のバージョンでは、このメソッドはlists
と呼ばれていました。
toArray()
は、モデル/コレクションを単純なPHP配列に変換します。
注:コレクション は強化された配列です。配列と同様に機能しますが、 ドキュメント でわかるように、多くの機能が追加されています。
残念ながら、PHPでは、配列を使用できるすべての場所でコレクションオブジェクトを使用することはできません。たとえば、foreach
ループでコレクションを使用することは問題ありませんが、array_map
に渡すことはできません。同様に、array
として引数を入力する場合、PHPはコレクションに渡すことができません。 PHPの新しいバージョンにはiterable
typehintがあり、これを使用して配列とコレクションの両方を受け入れることができます。
コレクションから単純な配列を取得したい場合は、その all()
メソッドを呼び出します。
1 findOrFail
メソッドとfirstOrFail
メソッドによってスローされるエラーは、 ModelNotFoundException
です。自分でこの例外をキャッチしなかった場合は、 Laravelは404で応答します であり、ほとんどの場合これが必要です。
@Joseph Silberからのすべての情報は正確で非常に有用です。
List()に回答を追加したい
From Laravel 5.2 Collection、query builder、およびEloquent query builderオブジェクトのlistメソッドは、pluckに名前が変更されました。メソッドのシグネチャは同じままです。