web-dev-qa-db-ja.com

テーブルの最後の行を選択

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

105
Carlos Suñol

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

プレラレベル4用

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

Laravel 4以降

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

これは、ファイルテーブルの行をアップロード時間の降順で並べ替え、最初のものを取ります。これが最新のアップロードファイルになります。

155

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

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

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

コレクションではなく、Userオブジェクトのインスタンスが返されます。もちろん、この代替手段を利用するには、Eloquentクラスを拡張したUserモデルが必要です。これは少しわかりにくいかもしれませんが、始めるのは本当に簡単で、ORMは本当に役に立ちます。

詳細については、かなり豊富で詳細な 公式文書 を調べてください。

70
Luis Milanese

出荷時の状態でLaravelで提供されている最新のスコープを使用してください。

Model::latest()->first();

そうすれば、すべてのレコードを取得することはできません。 orderByへのより良い近道。

70
Nick

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

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

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

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

Laravelコレクションにはメソッドlastがあります

Model::all() -> last(); // last element 
Model::all() -> last() -> pluck('name'); // extract value from name field. 

これが最善の方法です。

12
mdamia

これを試して :

Model::latest()->get();
10
Mark-Hero

最後のレコードの詳細を取得するには、以下のコードを使用してください。

Model::where('field', 'value')->get()->last()
2
Jimuel Palaca

どういうわけか、上のすべてがlaravel 5.3で私のために働かないようであるので、私は私自身の問題を使って解決しました:

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

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

1
The Dead Guy

以下のような新しいモデルでsaveまたはcreateアクションを実行するときに、Laravel 3および4で挿入した実際の行を探しているとします。

$user->save();

- または -

$user = User::create(array('email' => '[email protected]'));

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

最後に挿入されたレコードを探しても、ほとんどの場合はうまくいきますが、同時に挿入しなければならない場合は、間違ったレコードを見つけるためにクエリを実行することになります。複数のテーブルを更新する必要があるトランザクションシステムでは、これが本当に問題になる可能性があります。

1
bloggidy

テーブルに日付フィールドがある場合、これ(User::orderBy('created_at', 'desc')->first();)が最善の解決策です、と私は思います。しかし、日付フィールドはなく、Model ::orderBy('id', 'desc')->first()->id;が最善の解決策です、と私は確信しています。

0
wang xin