2016-02-09 6 views
1

Я новичок в laravel, и я использую Laravel 5.2. Я хочу иметь запись о максимальной дате окончания в столбцах заказов по индивидуальному запросу. Мои столы, как:Laravel 5 Eloquent получение записей из связанных таблиц

request 
----------- 
id | name 
---------- 
1 | My request 

bookings 
----------- 
id | request_id | start_date | end_date 
-------------------------------------------- 
1 | 1   | 2016-03-01 | 2016-03-05 
2 | 1   | 2016-03-10 | 2016-03-20 
3 | 1   | 2016-03-25 | 2016-03-28 

Request Model 
------------------ 
public function bookings() 
{ 
    return $this->hasMany('App\Booking'); 
} 

Я хочу, чтобы данные запроса с максимальной датой окончания (на приведенном выше примере запись будет бронирование Id: 3). Пожалуйста помоги.

Я попытался следующие:

$request = \DB::table('requests') 
       ->join('bookings', 'requests.id', '=', 'bookings.request_id') 
       ->where('requests.id', 1) 
       ->max('bookings.end_date'); 

Но мне интересно, как это сделать с красноречивым.

ответ

1

Вы можете DESc заказ на эту дату и выбрать первую запись:

$request = Request::find(1)->bookings()->orderBy('end_date', 'DESC')->first();

+0

бронирований в таблице могут быть в любом порядке. Например: '1 | 1 | 2016-03-01 | 2016-03-05 2 | 1 | 2016-03-25 | 2016-03-25 3 | 1 | 2016-03-10 | 2016-03-20' – Pranab

+0

@Pranab Я не понимаю проблему, если вы установите условие 'ORDER BY end_date', они будут __ordered__ независимо от их порядка ввода. Выполняет ли вышеуказанная функция для вас или нет? –

+1

Ahh .... да, это работает. Извините, я не получил ваш ответ с первого взгляда, но теперь ясно. Спасибо :) – Pranab

Смежные вопросы