function getPanstwaIds() { $sql = 'select panstwo_id from panstwo where kontynent_id = ?'; return $this-> getTable()-> getAdapter()-> fetchCol($sql, $this['kontynent_id']); } function dodajPanstwa($ids) { $panstwa = implode(' , ', $ids); $sql = 'update panstwo set kontynent_id = '. $this->kontynent_id . ' where panstwo_id in ( ' . $panstwa . ' )'; $db = $this->getTable()->getAdapter(); $db->query($sql); } function usunPanstwa($ids) { $panstwa = implode(' , ', $ids); $sql = 'update panstwo set kontynent_id = null where panstwo_id in ( ' . $panstwa . ' )'; $db = $this->getTable()->getAdapter(); $db->query($sql); } function ustalPanstwa($ids) { if (!is_array($ids)) { $ids = array(); } $biezace = $this->getPanstwaIds(); $do_usuniecia = array_diff($biezace, $ids); $do_dodania = array_diff($ids, $biezace); if (!empty($do_dodania)) { $this->dodajPanstwa($do_dodania); } if ($do_usuniecia) { $this->usunPanstwa($do_usuniecia); } }
Listing 32.10. Dodatkowe metody potrzebne do przetwarzania formularza tabeli kontynent
Rozdział 32. Edycja zależności relacyjnych