有人問這個問題,但沒有人提供了這個問題的令人滿意的解釋。Laravel渴望加載和whereHas
我運行下面的查詢:
$return = Vacation::whereHas('dates', function ($query) use ($from, $to) {
$query->whereBetween('start_date', [$from, $to]);
})->get();
根據查詢記錄,這將產生以下SQL。返回的結果是正確的,但JOINed數據存在問題。
select * from `vacations` where exists (select * from `vacation_dates` where `vacations`.`id` = `vacation_dates`.`vacation_id` and `start_date` between '2017-08-01 00:00:00' and '2017-08-30 00:00:00')
由於沒有JOIN,相關記錄隨後通過預先加載添加並且約束丟失。
該方案涉及Vacations
有多個啓動/停止日期,我想檢查哪些假期有$start
和$end
日期範圍內的start_date
。
如果沒有發生,則不會返回任何記錄。
當發生某種情況時,Vacation會返回所有日期,而不僅僅是約束中的那些日期。
我明白它是如何/它在做什麼,但看不到我需要什麼:記錄與連接的數據遵循約束。
有人嗎?
你試過whereRaw()呢? –
是的,似乎沒有做我想要的。 – stef