2016-04-17 66 views
0

我那裏是毫無保留的,所以我寫這寫查詢,我需要得到沙龍:Laravel whereHas之間沒有或不exsists

Salon::whereHas('reservationsSalons', function($q) { 
    $q->whereNotBetween('start_time', [request()->start_time, request()->end_time]); 
}) 
->get(); 

但問題是,我沒有得到沙龍沒有保留的地方。所以我需要像

->orwhereNotHas('reservationsSalons') 
+2

有一個方法'whereDoesntHave()'你可以在一個或者子句中使用,見這裏:https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Builder.html#method_whereDoesntHave –

回答

0

對您的問題的簡單答案是使用whereDoesntHave

然而,長的答案並不只是由你所知。我們看不到您的代碼,因此我們只能推測真正的問題。留給我,我認爲你的查詢已經是正確的假設你正在嘗試獲得未包含在輸入時間的保留。

找出問題的正確方法是使用DB::getQueryLog()檢查由Laravel/Eloquent構建器生成的查詢,並確保它是正確的查詢。

另外,您可能會發現使用原始查詢構建器或更原始的查詢可以獲得更快的查詢。