2017-07-17 54 views
1

我有一個與僱員和僱員關係到用戶的約會模型。我試圖查詢特定日期($ weekStart和$ weekEnd)之間的約會列表,並檢索約會以及相關的員工和用戶。Laravel在嵌套查詢中查詢模型?

到目前爲止,它返回所有客戶與所有約會和分配的員工/用戶(員工屬於用戶)。

'clients' => Client::with('careType','appointments.employees.user')->get(), 

但是我希望在約會模型的日期之間指定。所以我有這個:

$data = [ 
    'clients' => Client::with(['appointments' => function ($query) use ($weekStart, $weekEnd) { 
     $query->whereBetween('starts_at', [$weekStart, $weekEnd]); 
     }])->get(), 
]; 

在上面什麼是語法也檢索員工和用戶模型,當我有一個子查詢?

回答

1

您只需在您的Clientwith()陣列中添加您的其他型號。

$data = [ 
    'clients' => Client::with(['appointments' => function ($query) use ($weekStart, $weekEnd) { 
     $query->whereBetween('starts_at', [$weekStart, $weekEnd]); 
     }, 'appointments.employees.user'])->get(), 
]; 
+0

謝謝。這樣可行。不知道如何。 []中的所有內容是否都被評估爲一個?乍一看,我認爲這只是重置約會和get()而不是查詢列表。 –

+0

Laravel的Eager Loading有點複雜,但基本上所有with語句中的字符串元素(如'appointmentments.employees.user')都是先評估的,然後將評估數組中的所有函數並替換現有的字符串元素。 – Daniel