216

テーブルに挿入された最後のファイルを取得したいと思います。メソッドfirst()が存在し、テーブルの最初のファイルを提供することは知っていますが、最後の挿入を取得する方法がわかりません。

4

19 に答える 19

302

今までと同じフィールドで並べ替える必要がありますが、降順です。例として、アップロードが完了したときのタイム スタンプが である場合、次のupload_timeようにします。

Laravel 4以前の場合

return DB::table('files')->order_by('upload_time', 'desc')->first();

Laravel 4 以降の場合

return DB::table('files')->orderBy('upload_time', 'desc')->first();

Laravel 5.7 以降の場合

return DB::table('files')->latest('upload_time')->first();

これにより、ファイル テーブル内の行がアップロード時間の降順で並べられ、最初の行が取得されます。これが最後にアップロードされたファイルになります。

于 2013-05-14T17:49:03.993 に答える
82

LaravelのデフォルトORMであるEloquentを使用しているかどうかについては言及していません。もしそうなら、created_at によって User テーブルの最新のエントリを取得したいとしましょう。おそらく次のようにすることができます:

User::orderBy('created_at', 'desc')->first();

最初に、created_at フィールドでユーザーを降順に並べ替え、次に結果の最初のレコードを取得します。

コレクションではなく、User オブジェクトのインスタンスが返されます。もちろん、この代替手段を利用するには、Eloquent クラスを拡張する User モデルが必要です。これは少し混乱するように聞こえるかもしれませんが、開始するのは非常に簡単で、ORM は非常に役立ちます。

詳細については、非常に豊富で詳細な公式ドキュメントを確認してください。

于 2014-03-24T04:33:57.903 に答える
59

最後のレコードの詳細を取得するには

  1. Model::all()->last();また
  2. Model::orderBy('id', 'desc')->first();

最後のレコード ID を取得するには

  1. Model::all()->last()->id;また
  2. Model::orderBy('id', 'desc')->first()->id;
于 2015-10-07T13:02:37.387 に答える
5

最後のレコードの詳細を取得するには、次のコードを使用します。

Model::where('field', 'value')->get()->last()
于 2017-04-19T11:13:48.527 に答える
1

どういうわけか、上記のすべてがlaravel 5.3では機能しないようです。そのため、次を使用して自分の問題を解決しました。

Model::where('user_id', '=', $user_id)->orderBy('created_at', 'desc')->get();

誰かを救済できることを願っています。

于 2017-01-01T02:40:52.893 に答える
1

次のような新しいモデルでsaveorアクションを実行するときに、Laravel 3 および 4 で挿入した実際の行を探している場合:create

$user->save();

-また-

$user = User::create(array('email' => 'example@gmail.com'));

次に、挿入されたモデル インスタンスが返され、作成したばかりのユーザーのプロファイル ページへのリダイレクトなどのさらなるアクションに使用できます。

少量のシステムで最後に挿入されたレコードを探すことは、ほぼ常に機能しますが、同時に挿入する必要がある場合は、間違ったレコードを見つけるためにクエリを実行することになります。これは、複数のテーブルを更新する必要があるトランザクション システムでは、実際に問題になる可能性があります。

于 2013-05-14T19:19:34.193 に答える
0

テーブルに日付フィールドがある場合は、これ ( User::orderBy('created_at', 'desc')->first();) が最適なソリューションだと思います。しかし、日付フィールドはありません。これModel ::orderBy('id', 'desc')->first()->id;が最善の解決策です。

于 2018-12-25T03:19:51.327 に答える