Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Jak połączyć tabele w warstwie abstrakcyjnej aby w jednej wyszukać dane, dla których nie ma klucza obcego w drugiej tabeli?
Forum PHP.pl > Forum > PHP > Frameworki
stachuf11
Witam
Problem jest następujący

Wykonałem takie zapytanie w Symfony

  1. <?php
  2. $connection = Propel::getConnection();
  3.  
  4. $query = "SELECT DISTINCT p.hotele_id, p.kwatery_id, p.nazwa, p.rodzajepokoi_id FROM 
    pokoje p WHERE p.id NOT IN ( SELECT t.pokoje_id FROM terminy t WHERE (t.data BETWEEN '"
    .$od."' AND '".$do."' ))";
  5.  
  6.  
  7. $statement = $connection->prepareStatement($query);
  8. $rs = $statement->executeQuery();
  9. ?>


i otrzymuję oczekiwany wynik, ale czy mozna za pomocą warstwy abstrakcyjnej


  1. <?php
  2. $c=new Criteria();
  3. $c->addJoin(PokojePeer::ID,TerminyPeer::POKOJE_ID, Criteria::LEFT_JOIN);//co wstawić zamiast LEFT JOIN aby otrzymac oczekiwany resultat , czy wogole można
     taki efekt otrzymać ta drogą
  4.  
  5.  
  6. $c->add(TerminyPeer::DATA," BETWEEN '".$od."' AND '".$do."'",Criteria::CUSTOM);
  7.  
  8.  $this->results=PokojePeer::doSelect($c);
  9. ?>


to zapytanie nie zwróci oczekiwanego wyniku, czy mozna otrzymac taki wynik poprzez warstwę abstrakcji?
W sumie to jest tak, że jest tabela z pokojami, jest druga tabela z terminami, kazdy dzien rezerwacji dla pokoju ma rekord w tabeli twerminy, kolumny w tab terminy to id, data i pokoje_id, zadajemy zakres czasowy od do
i chcemy wyszukac pokoje, dla ktorych nie ma rezerwacji w zadanym przedziale czasowym, jak to zrobic przy uzyciu warstwy abstarkcji
proszę o wskazówki, jeśli można
Stachu
defrag
Cos w tym stylu moze byc?

$c = new Criteria();
$subSelect = "pokoj.ID NOT IN(SELECT t.pokoje_id FROM terminy t WHERE (t.data BETWEEN '".$od."' AND '".$do."' ));
$c->add(PokojPeer.ID, $subSelect, Criteria::CUSTOM);
$orders = PokojPeer::doSelect($c);
stachuf11
ok, moze
dziekuje
Stachu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.