Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Zend] Relacje
Fluke
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


Witam. Ostatnio eksperymentuje z Zendem i mam problem z relacjami. Wiem jak zrobić proste relacje ale nie wiem w jaki sposób zrobić o to przykłąd:
W pewnej relacji wybieramy jakieś rekordy z tabeli związanej ale chcemy do tego ograniczyć pewne żeczy np: jeżeli pole "ABC" != NULL czyli warunek where.

Przykład:
Tabela "Users" ||--->00 'images'
Wybieramy 1 użytkownika i wszystkie jego obrazki ale nie wybieramy tych które mają wartość "active" == NULL

Mam o to taki kod:
  1. <?php
  2.  
  3. //Rodzic
  4. class A extends Zend_Db_Table_Abstract {
  5. protected $_name = 'a';
  6. protected $_primary_key = 'aID';
  7. protected $_dependentTable = array('B');
  8.  
  9. function get($id) {
  10. $Result = $this->find($id);
  11.  
  12. $RowCurrent = $Result->current();
  13. $Dep = $RowCurrent->findDependentRowset('B');
  14. //...
  15. }
  16. }
  17.  
  18. //Dziecko
  19. class B extends Zend_Db_Table_Abstract {
  20. protected $_name = 'b';
  21. protected $_primary_key = 'bID';
  22. protected $_referenceMap = array(
  23. 'A' => array(
  24. 'columns' => array('aID'),
  25. 'refColumns' => array('bID'),
  26. 'refTableClass' => 'A'
  27. )
  28. );
  29. }
  30. ?>


Wszystko fajnie wybiera ale właśnie chce jeszcze ograniczyć po przez jakieś wartośći.

Z góry dziękuję.

Chyba znalazłem swoją odpowiedź ale nie wiem czy dobrze że tak się robi.
Mianowicie, żeby ograniczyć jeszcze w jakiś sposób trzeba skorzystać z metody 'select' z Zend_Db_Table_Select.

Czyli jeżeli mamy:
  1. <?php
  2.  
  3. //Rodzic
  4. class A extends Zend_Db_Table_Abstract {
  5. protected $_name = 'a';
  6. protected $_primary_key = 'aID';
  7. protected $_dependentTable = array('B');
  8.  
  9. function get($id) {
  10. $Result = $this->find($id);
  11.  
  12. //Dodajemy tutaj te 2 liniki
  13. $ModelB = new B();
  14. $query = $ModelB->select()->where('pole1 = ?', 2);
  15.  
  16. $RowCurrent = $Result->current();
  17. $Dep = $RowCurrent->findDependentRowset('B', null, $query); //oraz objekt typu Zend_Db_Table_Select czyli $query
  18. //...
  19. }
  20. }
  21.  
  22. //Dziecko
  23. class B extends Zend_Db_Table_Abstract {
  24. protected $_name = 'b';
  25. protected $_primary_key = 'bID';
  26. protected $_referenceMap = array(
  27. 'A' => array(
  28. 'columns' => array('aID'),
  29. 'refColumns' => array('bID'),
  30. 'refTableClass' => 'A'
  31. )
  32. );
  33. }
  34. ?>

Nie wiem tylko do czego służy to null w metodzie findDependentRowset();
Nie wiem czy jest to dobrze ale na pewno działa. Jak macie lepsze rozwiązania to chętnie posłucham.
Go to the top of the page
+Quote Post

Posty w temacie
- Fluke   [Zend] Relacje   11.10.2011, 21:50:49
- - 5k7   Ja na twoim miejscu zrobiłbym relacje w samej bazi...   14.10.2011, 12:12:41
- - Ges   http://framework.zend.com/manual/en/zend.d...ation...   14.10.2011, 15:01:34


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.12.2025 - 08:35