Reputation: 1251
The problem started because I have a table (Clientes), in which the primary key is not auto-incremental. I want to select the max value stored in a column database.
Like this select, but with eloquent ORM (Laravel):
SELECT MAX(Id) FROM Clientes
How can I do this?
I tried:
Cliente::with('id')->max(id);
Cliente::select('id')->max(id);
I prefer not to make a simple raw SELECT MAX(ID) FROM Clientes
I cannot make it.
Thanks all!
Upvotes: 82
Views: 210392
Reputation: 68
$maxid = Cliente::max('id');
You can also use orderByDesc
:
$maxid = Cliente::orderByDesc('id')->first();
Read more here -> https://laravel.com/docs/11.x/queries#aggregates
Upvotes: 0
Reputation: 21
We can use the following code :
$min_id = DB::table('table_name')->max('id');
https://laravel.com/docs/8.x/queries#aggregates
Upvotes: 2
Reputation: 99
Cliente::where('column_name', $your_Valu)->max('id') // You get any max column
Upvotes: 8
Reputation: 559
Laravel makes this very easy, in your case you would use
$maxValue = Cliente::max('id');
But you can also retrieve the newest record from the table, which will be the highest value as well
$newestCliente = Cliente::orderBy('id', 'desc')->first(); // gets the whole row
$maxValue = $newestCliente->id;
or for just the value
$maxValue = Cliente::orderBy('id', 'desc')->value('id'); // gets only the id
Or, if you have a created_at
column with the date you could get the value like this
$maxValue = Cliente::latest()->value('id');
Relevant Laravel Documentation: https://laravel.com/docs/5.5/queries#aggregates
Upvotes: 51
Reputation: 163768
The correct syntax is:
Cliente::max('id')
https://laravel.com/docs/5.5/queries#aggregates
Upvotes: 159