Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacje w Zend_Db_Table
Martio
post 6.07.2007, 20:17:33
Post #1





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


Mamy dwie klasy modeli:

  1. <?php
  2. class Accounts extends Zend_Db_Table_Abstract
  3. {
  4. protected $_name = 'accounts';
  5. protected $_dependentTables = array('Bugs');
  6. }
  7. ?>


  1. <?php
  2. class Bugs extends Zend_Db_Table_Abstract
  3. {
  4. protected $_name = 'bugs'; 
  5. protected $_dependentTables = array('BugsProducts');
  6. protected $_referenceMap = array(
  7. 'Reporter' => array(
  8. 'columns'  => 'reported_by',
  9. 'refTableClass'  => 'Accounts',
  10. 'refColumns' => 'account_name'
  11. ),
  12. 'Engineer' => array(
  13. 'columns'  => 'assigned_to',
  14. 'refTableClass'  => 'Accounts',
  15. 'refColumns' => 'account_name'
  16. ),
  17. 'Verifier' => array(
  18. 'columns'  => array('verified_by'),
  19. 'refTableClass'  => 'Accounts',
  20. 'refColumns' => array('account_name')
  21. )
  22. );
  23. }
  24. ?>


W pierwszej ustawiamy zależne klasy modeli, a więc klasa "Accounts" zależy od klasy "Bugs". W klasie "Bugs" zaś ustawiamy referencje tej klasy dla modelu "Acconuts". Zauważyć należy, że są ustawione 3 różne referencje - każde z innym pole relacji pomiędzy tablicami.

Przykład użycia:

  1. <?php
  2. $accountsTable = new Accounts(); // inicjacja "Account"
  3. $accountsRowset = $accountsTable->find(1234); // wyszukanie usera o ID 1234
  4. $user1234 = $accountsRowset->current(); // pobiera bieżący wiersz
  5. $bugsAssignedToUser = $user1234->findDependentRowset('Bugs', 'Engineer'); // pobiera model z referencji tablicy "Bugs" i jednej z ustalonych trzech ról - tutaj "Engineer"
  6. $bugs1234 = $bugsAssignedToUser->current(); // bieżący wiersz referencyjnej tablicy
  7.  
  8. $name = $user1234->name; // nazwa uzytkownika
  9. $bug = $bugs1234->message; // wiadomosc o bledzie
  10. ?>


Trochę to skomplikowane chcąc pobrać jedno pole z tablicy Account i jedno pole z tablicy Bugs. Czy nie da się tego uprość?

Jak znaleźć rekord, gdzie warunek występuję w obu tablicach? Np. accounts.id = 1234 AND bugs.code = 1.

Czy jest w stanie ktoś pomóc mi w tym temacie? Czy nikt z Was nie bawił się ZF?
Go to the top of the page
+Quote Post

Posty w temacie
- Martio   Relacje w Zend_Db_Table   6.07.2007, 20:17:33


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 - 09:02