protected function insertInternal($attributes = null)
{
if (!$this->beforeSave(true)) {
return false;
}
$values = $this->getDirtyAttributes($attributes);
if (empty($values)) {
$currentAttributes = $this->getAttributes();
foreach ($this->primaryKey() as $key) {
if (isset($currentAttributes[$key])) {
$values[$key] = $currentAttributes[$key];
}
}
}
$newId = static::getCollection()->insert($values);
if ($newId !== null) {
$this->setAttribute('_id', $newId);
$values['_id'] = $newId;
}
$changedAttributes = array_fill_keys(array_keys($values), null);
$this->setOldAttributes($values);
$this->afterSave(true, $changedAttributes);
return true;
}