Ответ 1
Вы должны быть в состоянии выполнить выборку в таблице заказов, используя необработанный WHERE для поиска максимального (id
) в подзапросе, например так:
\DB::table('orders')->where('id', \DB::raw("(select max('id') from orders)"))->get();
Если вы хотите использовать Eloquent (например, чтобы вы могли преобразовать свой ответ в объект), вам следует использовать whereRaw, потому что некоторые функции, такие как toJSON
или toArray
, не будут работать без использования моделей Eloquent.
$order = Order::whereRaw('id = (select max('id') from orders)')->get();
Это, конечно, требует, чтобы у вас была модель, расширяющая Eloquent.
class Order extends Eloquent {}
Как уже упоминалось в комментариях, вам не нужно использовать whereRaw
, вы можете выполнить весь запрос, используя построитель запросов без необработанного SQL.
// Using the Query Builder
\DB::table('orders')->find(\DB::table('orders')->max('id'));
// Using Eloquent
$order = Order::find(\DB::table('orders')->max('id'));
(Обратите внимание, что если поле id
не уникально, вы получите только одну строку назад - это потому, что find()
будет возвращать только первый результат с сервера SQL.).