BaseActiveRecord::afterSaveHasMany PHP Method

afterSaveHasMany() private method

Save objects to the given relation.
private afterSaveHasMany ( $name, $rel, $new_objs, $orig_objs )
$name
$rel
$new_objs
$orig_objs
    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}');
                    }
                }
            }
        }
    }