Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Problem z wykonaniem zapytania przez DOctrine, Doctrine
Juzek
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.08.2007

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


Witam.

Chcę wykonać następujące zapytanie w komponęcie:
  1. SELECT DISTINCT(`Cities`.`cities_id`) FROM `Cities`
  2. INNER JOIN `Institutions`
  3. INNER JOIN `Offers`
  4. WHERE `Offers`.`offers_institutions_id` = `Institutions`.`institutions_id`
  5. AND `Institutions`.`institutions_cities_id` = `Cities`.`cities_id`


Wklejone do PMA zwraca prawidłowy wynik.

Próby wywołań:
  1. $this->eW = Doctrine_Query::create()->query('
  2. SELECT DISTINCT(`Cities`.`cities_id`) FROM `Cities`
  3. INNER JOIN `Institutions`
  4. INNER JOIN `Offers`
  5. WHERE `Offers`.`offers_institutions_id` = `Institutions`.`institutions_id`
  6. AND `Institutions`.`institutions_cities_id` = `Cities`.`cities_id`
  7. ');


(lub po zakomentowaniu powyższego)

  1. $this->eW = Doctrine_Query::create()
  2. ->select('DISTINCT(`Cities`.`cities_id`)')
  3. ->from('Cities c, Institutions i, Offers o')
  4. ->where('o.offers_institutions_id = i.institutions_id')
  5. ->andWhere('i.institutions_cities_id = c.cities_id')
  6. ->execute();


W obu przypadka otrzymuje:

500: Couldn't find class `Cities`.

... mimo, że w dalszej części klasy prawidłowo wykonuje się
  1. $this->citiess = Doctrine::getTable('Cities')->createQuery('a')->orderBy('cities_title ASC')->execute();


Czym może to być spowodowane ?

Dziękuję z góry za pomoc, wracam na Google w poszukiwaniu odpowiedzi ...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Skoro masz nadany dla tabeli Cities alias c to czemu go nie używasz? Spróbuj
->select('DISTINCT c.cities_id')
I zrób z tego sensowne joiny a nie iloczyny kartezjańskie (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
destroyerr
post
Post #3





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Ja to bym usunął wszystkie lewe apostrofy, bo zapytania parsuje Doctrine i dlatego może mieć problem z odnalezieniem odpowiedniej klasy, która w nazwie ma mieć te apostrofy.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja ogólnie nie używam Doctrine, ale skoro pluje się o klasę a widać jak byk, że różnicą między wszystkimi zapisami jest użycie odwróconego (lewego) apostrofu to na bank on jest przyczyną i jego trzeba z zapytania usunąć. Stąd właśnie poradziłem użycie aliasu i przez to ów apostrof zniknąłby i tym samym zapytanie powinno zostać łyknięte.

Trochę ruszenia szarych komórek. Ja nie znam Doctrine kompletnie, a mimo wszystko logicznie myśląc powiązałem odwrócone apostrofy z błędem i niemal pewien jestem, że ich usunięcie z zapisu naprawi problem.
Go to the top of the page
+Quote Post
Juzek
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.08.2007

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


Witam.

Problem z zapytaniem rozwiązałem w ten sposób:

  1. $this->o = Doctrine_Query::create()->select('*')->distinct(`Cities` . `cities_id`)->from('Cities c, Institutions i, Offers o')->where('o.offers_institutions_id = i.institutions_id')->andWhere('i.institutions_cities_id = c.cities_id')->execute();


Po kilku minutach rozwiązałem ten problem, chciałem się pochwalić ale na podstronie "edycja postu" skrypt forum wklejał niepoprawną treść a podstrona "odpowiedź" wyrzucała mi pusty błąd ...



Pozdrawiam.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.12.2025 - 19:06