2017-02-23 44 views
0

我有一個模型,預訂,其中有許多serviceDates。通過它在Laravel的第一個相關模型對模型進行排序?

Laravel(5.3)可能會在他們的第一個服務日期'date'列中對我的預訂進行分類嗎?

我已經試過這...

$reservations = Reservation::with(['serviceDates' => function ($q) { 
          $q->orderBy('date', 'asc'); 
         }])->get(); 

...但是這似乎並沒有起作用,因爲預訂的hasMany serviceDates並沒有有1個serviceDate。

回答

1

它不起作用的原因是Laravel中的熱切加載不會加入相關表格,而是在單獨的查詢中選擇它們。

在我看來,最簡單的解決方案是增加了最新serviceDate作爲由子查詢到您的查詢,訂購吧:

$reservations = Reservation::select('reservations.*') 
    ->selectRaw(' 
     (SELECT MIN(date) FROM service_dates WHERE reservation_id = reservations.id) as service_date 
    ') 
    ->orderBy('service_date') 
    ->get() 

您仍然可以渴望加載服務日期,如果需要的話。

+0

接近我所需要的。不得不換MAX的MIN,儘管在我的情況下按照時間順序獲得第一個日期。在MAX的情況下,它顯示有人在五月份的第一次服務日期是11月份的兩個人之間,因爲他們的最後一天是在十一月。用MIN切換會返回完美的結果集。謝謝! – Octoxan

+0

我剛剛做到了。 =]可能希望編輯一個MIN的MAX,以便在第一個日期正確回答排序。謝謝,很好, – Octoxan

+1

謝謝,很好的電話。編輯它:) – nXu

相關問題