public function updateWriters($writers_name) { $writers_name = preg_split('/\\//', $writers_name); $new = array(); foreach ($writers_name as $name) { $name = trim($name); //if ($name == '') continue; //array_push($new, WriterPeer::retrieveByName($name)->getId()); if ($name == '') { continue; } if (WriterPeer::retrieveByName($name)->getId() != null) { array_push($new, WriterPeer::retrieveByName($name)->getId()); } else { $w = new Writer(); $w->setName($name); } } $old = split(',', $this->getWritersId()); if ($new == null) { $removed = $old; $inserted = array(); } else { $inserted = array_diff($new, $old); $removed = array_diff($old, $new); } foreach ($removed as $id) { if ($id == null || $id == '') { continue; } $cw = CatalogWriterPeer::retrieveByPK($this->getId(), $id); $cw->delete(); } foreach ($inserted as $id) { $cw = new CatalogWriter(); $cw->setCatalogId($this->getId()); $cw->setWriterId($id); $cw->save(); } }