Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [zend] wyswietlanie polaczonych danych z dwoch tabell
nieraczek
post 23.10.2008, 18:22:39
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
batman
post 24.10.2008, 06:58:32
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat
W modelu Ksiazki zrobiłem tak:

Zwraca Ci NULL ponieważ do fetchAll przekazujesz zmienną, która nie zawiera zapytania. Dziwne, że nie zgłosiło Ci błędu lub ostrzeżenia.
Zrób tak:
  1. <?php
  2. public function getBooksWithAuthors() {
  3.    $select = $this->select()
  4.             ->join(array('a' => 'autorzy'), 'k.id_autora = a.id_autora');
  5.    return $this->fetchAll($select);
  6. }
  7. ?>

Jeśli nadal będzie zwracało NULL, to przed return wstaw echo $select i zobacz co Ci za SQL-a skleiło.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.06.2025 - 23:14