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
nieraczek
post 24.10.2008, 07:12:12
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

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


  1. <?php
  2. An error occurred
  3. Application error
  4. Exception information:
  5.  
  6. Message: Select query cannot join with another table
  7. ?>



Jak zamiast aliasu 'k' użyję całej nazwy tabeli to też jest ten sam błąd:
Kod
public function getBooksWithAuthors()
    {
            $select = $this->select()
            ->join(array('a' => 'autorzy'), 'ksiazki.id_autora = a.id_autora');
           return $this->fetchAll($select);
    }



Może faktycznie nie można w klasie odpowiedzialnej za tabelę używać zapytania z JOIN'em. Tylko wówczas oznaczałoby to poważne ograniczenie w modelach ZF i to, że nadają się one tylko do zwracania wyników zapytania tej tabeli której dotyczy dany model hm......
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: 14.08.2025 - 23:20