Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie sql sprawdzające wolny termin, na podstawie daty od i daty do
ze4lot
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 1
Dołączył: 29.03.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam,

Przestudiowałem sobie już istniejące tematy na ten temat i albo coś mi nie działało albo dotyczyło odwrotnej sytuacji czyli zwracało wolne pokoje w danym terminie.

Do rzeczy:

Tabela reservations:
obj_id (id obiejktu/pokoju do rezerwacji),
date_from (data od),
date_to (data do)
status (załóżmy, że zawsze 1),

  1. SELECT * FROM `reservations` WHERE
  2. ((`date_from` <= $date_from AND `date_to` >= $date_from) OR
  3. (`date_from` <= $date_to AND `date_to` >= $date_to))
  4. AND `status` = 1 AND `obj_id` = $obj_id


Zapytanie zostało wygenerowane przez kod PHP (eloquent):

  1. protected function checkByStatus($obj_id, $date_from, $date_to, $status) {
  2.  
  3. $query = $this->newQuery();
  4. $query->where(function($query) use ($date_from, $date_to) {
  5. $query->where(function($query) use ($date_from) {
  6. $query->where('date_from', '<=', $date_from)
  7. ->where('date_to', '>=', $date_from);
  8. });
  9. $query->orWhere(function($query) use ($date_to) {
  10. $query->where('date_from', '<=', $date_to)
  11. ->where('date_to', '>=', $date_to);
  12. });
  13. });
  14. $query->where('status', $status);
  15. $query->where('obj_id', $obj_id);
  16. //return dd($query->toSql());
  17. if($query->count() == 0)
  18. return true;
  19. return false;
  20. }


Niestety powyższy kod nie działa prawidłowo i w niektórych przypadkach zwraca wolny termin pomimo, że nie jest wolny.
Bardzo proszę o pomoc w poprawieniu zapytania oraz odpowiedzenie na poniższe pytania:

1. Czy zmienne $date_to i $date_from mogą być zwykłymi stringami (2012-07-03)?
2. Czy właściwie ustawiłem typ kolumn date_from i date_to jako Date?

PS.
Jeżeli jest już na forum rozwiązanie to proszę o linka, mnie osobiście nie udało się znaleźć.



Ten post edytował ze4lot 9.07.2013, 13:05:05


--------------------
ze4lot.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
buliq
post
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Masz złe warunki, to źle wybiera

$date_from <= date_to and $date_from >= date_from and $date_to >= date_from and $date_to <= date_to


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 02:35