如何从laravel中具有相同id的数据库中获取最新记录?

时间:2016-04-26 11:49:20

标签: laravel eloquent

我正在尝试获取具有相同ID的最新记录。例如 我有桌子

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

我想得到像这样的结果

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

我如何在Laravel中这样做?我只能按降序排序记录。不知道如何选择每个ID的最新记录。谢谢。

6 个答案:

答案 0 :(得分:6)

尝试使用laravel中的Collections服务,并使用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

获得的

答案 1 :(得分:0)

尝试这种方式,它会为您提供最新的分组ID:

SELECT MAX(ID), Created_at
FROM table
GROUP BY ID, Created_at

答案 2 :(得分:0)

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

试试这个

答案 3 :(得分:0)

谢谢大家的帮助。

我能够解决这个问题
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)

答案 4 :(得分:0)

包含指令 Db

runApp( list( ui = fluidPage( sidebarLayout( sidebarPanel( selectInput(inputId = "IND", label = "Select indicator:", choices = list("Diagnosis" = c("A", "B"), "Treatment" = c("C", "D"), "Outcome" = c("E", "F", "G"))) , width = 3), mainPanel( ) ) ) , server = function(input, output, session){ } ) )

如果你有user_id。

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

答案 5 :(得分:0)

您可以尝试使用whereRaw获取groupBy laravel

中的最后记录
$data = Table::whereRaw('Created_at IN (select MAX(Created_at) FROM table GROUP BY ID)')->get();