private function afterSaveHasMany($name, $rel, $new_objs, $orig_objs)
{
$saved_ids = array();
if ($new_objs) {
foreach ($new_objs as $i => $new) {
$new->{$rel->foreignKey} = $this->getPrimaryKey();
if ($new->hasAttribute('display_order')) {
$new->display_order = $i + 1;
}
if (!$new->save()) {
throw new Exception('Unable to save {$name} item {$i}');
}
$saved_ids[] = $new->getPrimaryKey();
}
}
if ($orig_objs) {
foreach ($orig_objs as $orig) {
if (!in_array($orig->getPrimaryKey(), $saved_ids)) {
if (!$orig->delete()) {
throw new Exception('Unable to delete removed {$name} with pk {$orig->primaryKey}');
}
}
}
}
}