Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF]Dynamicznie tworzony warunek dla filtrowania rekordów
Forum PHP.pl > Forum > PHP > Frameworki
amii
Mam metodę w klasie rekordu, która filtruje skojarzone rekordy:

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


To działa ale dla pojedynczego warunku a co jeśli chce przesłać klika warunków w tabeli ? Przydała by się taka dynamiczność bo teraz dla zapytań filtrujących różną ilość warunków muszę tworzyć osobne metody w klasie Application_Model_DbTable_Trainings_Row
k_@_m_i_l
Spóbuj coś takiego
  1. class Application_Model_DbTable_Trainings_Row extends Zend_Db_Table_Row
  2. {
  3. public function getInstance($conds) {
  4. if (count($conds)) {
  5. $m = new Application_Model_DbTable_TrainingInstance();
  6. $select = $m->select();
  7. foreach($conds as $where)
  8. {
  9. $select->where($where['condition'],$where['value']);
  10. }
  11. return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance', null, $s);
  12. }
  13. return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance');
  14. }
  15.  
  16. }
  17.  
  18. //przykladowe wywolanie, gdzie $v1 to pojedynczy rekord z tabeli Application_Model_DbTable_Trainings
  19. $v1->getInstance(array(
  20. array('condition'=>'id > ?','value'=>array(1)),
  21. array('condition'=>'id < ?','value'=>array(5))
  22. ));
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.