Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Jak przefiltrować rekordy, które są w relacji
Forum PHP.pl > Forum > PHP > Frameworki
amii
Mam dwie klasy modeli połączone relację 1:n
W klasie nadrzędnej (do, której może należeć n-rekordów) mam napisaną dla pojedynczego rekordu taką metodę, zwracającą n-rekordów połączonych:

  1.  
  2. class Application_Model_DbTable_Trainings_Row extends Zend_Db_Table_Row
  3. {
  4.  
  5. public function getInstance($cond = NULL) {
  6. if ($cond !== NULL) {
  7. $m = new Application_Model_DbTable_TrainingInstance();
  8. $s = $m->select()->where('date_start > ?', new Zend_Db_Expr('CURDATE()'))->order('date_start ASC');
  9. return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance', null, null, $s);
  10. }
  11. return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance');
  12. }
  13.  
  14. }
  15.  


Niestety po wywołaniu, rekordy nie są filtrowane, tzn. dostaje wszystkie. Mogę to co w prawdzie przefiltrować warunkiem w widoku ale na pewno nie jest to optymalne.

  1. $instances = $v1->getInstance(true);
  2. var_dump($instances);
k_@_m_i_l
Zobacz, funkcja findDependentRowset wygląda tak:
  1. public function findDependentRowset($dependentTable, $ruleKey = null, Zend_Db_Table_Select $select = null)

Ty przekazałeś o jednego null-a za dużo.
Cytat(amii @ 12.12.2012, 11:04:47 ) *
  1. return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance', null, null, $s);


Spróbuj tak, powinno pomóc:
  1. return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance', null, $s);

amii
Faktycznie aż mi głupio, że czegoś takiego nie zauważyłem ale tak to jest jak się kopiuje kod, który zakładam że jest dobry
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.