Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%)
|
Odnośnie tego co pisał batman i thm w innym moim poście chciałbym zrobić teraz poprawne pod względem technicznym wyświetlanie połączonych danych z dwóch tabel.
Powiem co zrobiłem: W folderze 'models' utworzyłem pliki: Ksiazki.php: Kod <?php class Ksiazki extends Zend_Db_Table { protected $_name = 'ksiazki'; protected $_primary = 'id_ksiazki'; } Autorzy.php: Kod <?php class Autorzy extends Zend_Db_Table { protected $_name = 'autorzy'; protected $_primary = 'id_autora'; } Natomiast w pliku IndexController.php mam: Kod public function indexAction() { $db = Zend_Registry::get('dbAdapter'); $select = $db->select() ->from(array('k' => 'ksiazki')) ->join(array('a' => 'autorzy'), 'k.id_autora = a.id_autora'); $this->view->lista = $db->fetchAll($select); } A w innym pliku wyświetlam wyniki zapytania. Wszystko działa, ale jak widzicie w pliku 'IndexController.php' nie robię chyba zbyt poprawnym sposobem przynajmniej takie odniosłem wrażenie po wypowiedzi batmana i thm?? Więc jak to powinno wyglądać prawidłowo ? Jak rozumiem powinno być w pliku IndexController.php coś takiego: Kod public function indexAction() { $ksiazkiTabela = new Ksiazki(); $autorzyTabela = new Autorzy(); } Ale co dalej - jak zrobić SELECTA ? Bo jak zrobię tak jak na tej stronie: http://framework.zend.com/manual/en/zend.d...t.building.join // Create the Zend_Db_Select object $select = $db->select(); to wrócę przecież do tego sposobu wyświetlania, który mam obecnie, a który nie jest podobno poprawny. Ten post edytował nieraczek 23.10.2008, 18:25:41 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%)
|
W modelu Ksiazki zrobiłem tak:
Kod public function getBooksWithAuthors() { $this->select() ->from(array('k' => 'ksiazki')) ->join(array('a' => 'autorzy'), 'k.id_autora = a.id_autora'); return $this->fetchAll($select); } W kontrolerze tak: Kod $ksiazkiTabela = new KsiazkiTable(); $this->view->lista = $ksiazkiTabela->getBooksWithAuthors(); Jednak Kod var_dump($this->lista); zwraca mi NULL. W tej funkcji getBooksWithAuthors() chyba coś nie tak z zapytaniem ?A może jednak to niemożliwe żeby w modelu, który odpowiada za tabelę Ksiazki pobrać takze dane z tabeli Autorzy ? Bo na tej stronie jest opisana metoda taką jak robiłem poprzednio i określona mianem 'najlepszej praktyki': http://wiki.ekini.net/main/Zend_db Kod Best Practices [edit] What is the best way to do queries in Zend Framework? Please see this blog post http://blog.ekini.net/2008/02/12/what-is-the-safest-way-to-do-database-queries-in-zend-framework/ //Roman Nestertsov's way of doing it. $db = Zend_Registry::get(’dbAdapter’); $sql = $db->quoteInto(”SELECT * FROM Table1 WHERE id = ?”, $target_id); //Erik's way of doing it. $db = Zend_Registry::get(’dbAdapter’); $select = $db->select()-> from(’Table1′, ‘*’)-> where(’id = ?’, $id)-> where(’url = ?’, $url); $row = $db->fetchRow($select); Czyli tak jak robiłem poprzednio. Ale z drugiej strony wtedy nie potrzebne byłyby modele, czyli jednak jakoś powinno się to dać zrobić w klasie, tylko jak ? |
|
|
|
nieraczek [zend] wyswietlanie polaczonych danych z dwoch tabell 23.10.2008, 18:22:39
batman Jak to powinno wyglądać u Ciebie.
1. W kontrolerze... 23.10.2008, 21:14:36
batman CytatW modelu Ksiazki zrobiłem tak:
Zwraca Ci NULL... 24.10.2008, 06:58:32
nieraczek [PHP] pobierz, plaintext <?phpAn error occurred... 24.10.2008, 07:12:12
batman Sądziłem, że ten sposób zadziała. Skoro nie działa... 24.10.2008, 07:18:40
nieraczek hm.......
Obojętnie czy mam:
[PHP] pobierz, plain... 24.10.2008, 08:09:39
batman Zrób echo ze zmiennej $select i wykonaj je w ... 24.10.2008, 08:27:19
nieraczek Dziwne, bo jeden sposób nie działa, a drugi k... 24.10.2008, 08:49:52
bigZbig Bo za pierwszym razem próbujesz wykonać
Kod... 24.10.2008, 08:53:05
batman Masz jakieś dziwne problemy. U mnie działa to bez ... 24.10.2008, 08:55:09
nieraczek lol - faktycznie, zrobiłem tak jak napisa... 24.10.2008, 09:05:49
MakeArt Witam mam problem...wzorowałem się na tym wątku i ... 10.11.2008, 17:03:25
batman Zamiast[PHP] pobierz, plaintext <?phpprotected ... 10.11.2008, 18:19:28
MakeArt już to robiłem... zapytanie jest dobre. 10.11.2008, 19:18:32
batman Cytatzapytanie jest dobre
Czyli zwróciło jakieś wi... 10.11.2008, 20:05:10
MakeArt Dzieki. kurcze zwraca...
[PHP] pobierz, plaintext... 11.11.2008, 14:02:25 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 20:42 |