2016-04-26 9 views
2

私は同じIDを持つ最新のレコードを取得しようとしています。たとえば のために私はテーブルの私はLaravelでこれを行うにはどうすればよいこのlaravelの同じIDを持つデータベースから最新のレコードを取得する方法は?

ID | Created_at 
1 |2016-04-26 
2 |2016-04-27 

ような結果を取得したい

ID | Created_at 
    1 |2016-04-26 
    1 |2016-04-20 
    1 |2016-04-18 
    2 |2016-04-27 
    2 |2016-04-19 

がありますか?私は降順でしかレコードを注文できませんでした。各IDの最新のレコードを選択する方法を知らない。ありがとうございました。

答えて

0

これは、最新のidを得るために働く必要があります。

Model::where('id', $id)->orderBy('created_at', 'desc')->first(); 

あなたがidsすべての最新のが必要な場合は、このアプローチは動作するはずです:

Model::orderBy('created_at', 'desc')->groupBy('id')->get(); 
0

はそれをこの方法を試してみてください、それはあなたにグループ化された最大を与えます最新のID:

SELECT MAX(ID), Created_at 
FROM table 
GROUP BY ID, Created_at 
0
DB::raw('SELECT * FROM `test` WHERE 1 GROUP BY `ID` ORDER BY `Created_at` ASC'); 

お試しください

6

laravelのコレクションサービスを試してみてlast()メソッドを使用してください。例:

$data = ModelName::all(); 
$last_data_object = collect($data)->last(); 

//try to see the object using var_dump() 
var_dump($last_data_object); 

私はhttps://laravel.com/docs/5.2/collections#method-last

0

からそれを得るには、あなたの助けのために皆に感謝します。私はあなたがuser_idをしている場合はディレクティブDbの

$id = DB::table('your_table')->orderBy('id', 'desc')->value('id');

を含める

DB::raw("SELECT ID,created_at FROM <table name> a WHERE created_at=(SELECT max(created_at) FROM <table name> b WHERE a.ID=b.ID) 
0

によってこの問題を解決することができました。

$id = DB::table('your_table')->where('user_id', $user_id)->orderBy('id', 'desc')->value('id');

0

あなたはgroupBy laravel

$data = Table::whereRaw('Created_at IN (select MAX(Created_at) FROM table GROUP BY ID)')->get(); 
で最後のレコードを取得する whereRawで試すことができます
関連する問題