Laravel Query Builder donde max id

¿Cómo logro esto en Laravel 4.1 QUery Builder?

select * from orders where id = (select max(`id`) from orders) 

Intenté esto, trabajando, pero no puedo obtener la característica eloquent.

 DB::select(DB::raw('select * from orders where id = (select max(`id`) from orders)')); 

Alguna idea para hacerlo mejor?

Debería poder realizar una selección en la tabla de pedidos, utilizando un DONDE sin procesar para encontrar el máximo ( id ) en una subconsulta, como esta:

  DB::table('orders')->where('id', DB::raw("(select max(`id`) from orders)"))->get(); 

Si desea usar Eloquent (por ejemplo, para que pueda convertir su respuesta a un objeto), querrá usar whereRaw, porque algunas funciones, como toJSON o toArray , no funcionarán sin usar modelos Eloquent.

  $order = Orders::whereRaw('id = (select max(`id`) from orders)')->get(); 

Eso, por supuesto, requiere que tengas un modelo que extienda Eloquent.

  class Orders extends Eloquent {} 

Como se mencionó en los comentarios, no es necesario utilizar whereRaw , puede hacer toda la consulta utilizando el generador de consultas sin SQL sin formato.

  // Using the Query Builder DB::table('orders')->find(DB::table('orders')->max('id')); // Using Eloquent $order = Orders::find(DB::table('orders')->max('id')); 

(Tenga en cuenta que si el campo id no es único, solo obtendrá una fila atrás , esto es porque find() solo devolverá el primer resultado del servidor SQL).

Como dicen los doctores

 DB::table('orders')->max('id'); 

No es necesario usar la sub consulta, solo prueba esto, funciona bien:

  DB::table('orders')->orderBy('id', 'desc')->first(); 
 Orders::max('id'); 

Lo usé es corto y mejor;

Para objetos puedes anidar las consultas:

 DB::table('orders')->find(DB::table('orders')->max('id')); 

Entonces, la consulta interna busca el ID máximo en la tabla y luego lo pasa al buscador, que le devuelve el objeto.