我正在尝试获取具有相同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的最新记录。谢谢。
答案 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);
获得的
答案 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();