Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]wyjatek z db table
elmozaur
post 15.07.2011, 14:03:25
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


witam moj problem jest taki:

w modelu zadaje pytanie o obrazki i ich tlumaczenia (zlaczenie tabel pl i en)
  1. $select = $this->select()
  2. ->setIntegrityCheck(false)
  3. ->from(array("gi" => "galeria_img"), array("*"))
  4. ->join(array("gil" => "galeria_img_lang"),
  5. 'gi.img_id = gl.l_img_id')
  6. ->where("gi.g_id = ?", $id)
  7. ->where("gil.lang = ?", $lang)
  8. ;


i teraz jesli tabela eng istnieje to niema problemu niestety w sytuacji gdy user w adminie nie zrobil jeszcze tlumaczenia (wpis o okreslonym id nie istnieje) takie zapytanie sie sypie.

pytanie:
jak zlapac wyjatek z czegos takiego i jesli wystapi to zadac takie pytanie
  1. $select = $this->select()
  2. ->from(array("gi" => "galeria_img"), array("*"))
  3. ->where("g_id = $id")
  4. ;


staram sie to wsadzic w klamry try ale nie wychodzi cos..

dziekuje i pozdrawiam
G
Go to the top of the page
+Quote Post
KrzysiekWildfire
post 15.07.2011, 14:24:54
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 11
Dołączył: 27.10.2010
Skąd: Kutno/Poznań

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


spróbuj z left join - powinno pomóc.
Go to the top of the page
+Quote Post
elmozaur
post 15.07.2011, 19:10:21
Post #3





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


niestety zendowe joinLeft tez sobie nie radzi
Go to the top of the page
+Quote Post
melkorm
post 16.07.2011, 10:47:28
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


No ale przecież masz błąd w zapytaniu wink.gif bo nie masz tam tabelki / aliasu "gl"


--------------------
Go to the top of the page
+Quote Post
elmozaur
post 16.07.2011, 15:16:39
Post #5





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


faktycznie przez kombinowanie zrobilem blad ale po poprawieniu na :
  1. $select = $this->select()
  2. ->setIntegrityCheck(false)
  3. ->from(array("gi" => "galeria_img"), array("*"))
  4. ->joinLeft(array("gil" => "galeria_img_lang"),
  5. 'gi.img_id = gil.l_img_id')
  6. ->where("gi.g_id = ?", $id)
  7. ->where("lang = ?", $lang)
  8. ;
  9.  
  10. $row = $this->fetchAll($select)->toArray();

zapytanie dziala tylko gdy mozna zrobic join. jesli nie to robi sie wyjatek
Go to the top of the page
+Quote Post
melkorm
post 16.07.2011, 20:44:16
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


A może pokażesz ten wyjątek?

Cytat
->where("lang = ?", $lang)


Tutaj przypadkiem prefiksu nie powinno być?

Ten post edytował melkorm 16.07.2011, 20:45:04


--------------------
Go to the top of the page
+Quote Post
elmozaur
post 17.07.2011, 20:21:00
Post #7





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


problem rozwiazany !
wszystko co zle znajdowalo sie tutaj:

  1. $row = $this->fetchRow($select)->toArray();


jesli left join zwraca nic a ja chcialem robic z tego array to sie sypalo. teraz jest gitara. raz jeszcze dziekuje i pozdrawiam
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: 14.08.2025 - 13:09