Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Jak połączyć tabele w warstwie abstrakcyjnej aby w jednej wyszukać dane, dla których nie ma klucza obcego w drugiej tabeli?
stachuf11
post 18.12.2007, 15:41:26
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

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


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

Ten post edytował stachuf11 18.12.2007, 20:24:10
Go to the top of the page
+Quote Post
defrag
post 20.12.2007, 16:47:17
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 3
Dołączył: 15.01.2007

Ostrzeżenie: (10%)
X----


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);
Go to the top of the page
+Quote Post
stachuf11
post 23.12.2007, 17:17:05
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 1
Dołączył: 24.04.2006

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


ok, moze
dziekuje
Stachu
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 21.06.2025 - 21:04