2015-10-27 12 views
13

Tworzę stronę z raportem i chcę wyświetlić raporty od określonej daty do określonej daty. Mój obecny kod to:Eraquent Data Eraquent Laravel - zapytanie między dwiema datami

$now = date('Y-m-d'); 
$reservations = Reservation::where('reservation_from', $now)->get(); 

Co to jest select * from table where reservation_from = $now. Mam tutaj zapytanie, ale nie wiem, jak przekonwertować go na wymowne zapytanie. To jest mój kod:

SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to 

Jak mogę zamienić kod na elokwentne zapytanie? Z góry dziękuję.

+0

Jaki jest format daty w 'reservation_from'. możesz na tej podstawie użyć wartości Węgla. –

+0

Format daty to TIMESTAMP @AthiKrishnan – FewFlyBy

+2

to byłoby: 'Rezerwacja :: gdzie ('reservation_from', '> =', Carbon :: createFromDate (1975, 5, 21);) -> where ('reservation_from', '<=', Carbon :: createFromDate (2015, 5, 21);) -> get() '; –

Odpowiedz

29

Sposób whereBetween sprawdza, czy wartość danej kolumny wynosi dwóch wartości.

Spróbuj:

$reservations = Reservation::whereBetween('reservation_from', [$from, $to])->get(); 

Jeśli chcesz dodać więcej warunków, można użyć orWhereBetween.

$reservations = Reservation::whereBetween('reservation_from', [$from_from, $to_from]) 
       ->orWhereBetween('reservation_to', [$from_to, $to_to]) 
       ->get(); 

należy wiedzieć o: whereNotBetween, whereIn, whereNotIn, whereNull, whereNotNull

Laravel docs about where.

2

następuje powinno działać:

$now = date('Y-m-d'); 
$reservations = Reservation::where('reservation_from', '>=', $now) 
          ->where('reservation_from', '<=', $to) 
          ->get(); 
4

Spróbuj tego:

Ponieważ pobierasz na podstawie pojedynczej wartości kolumny można uprościć Twoje zapytanie podobnie:

$reservations = Reservation::whereBetween('reservation_from', array($from, $to))->get(); 

Operacja pobierania na podstawie warunku: laravel docs

nadzieję, że to pomogło.

2

Inną opcją, jeśli pole jest datetime zamiast date (chociaż to działa dla obu przypadkach):

$fromDate = "2016-10-01"; 
$toDate = "2016-10-31"; 

$reservations = Reservation::whereRaw("reservation_from >= ? AND reservation_from <= ?", 
    array($fromDate." 00:00:00", $toDate." 23:59:59") 
)->get(); 
Powiązane problemy