Db::save()
\nn\t3::Db()->save($tableNameOrModel = '', $data = []);
Datenbank-Eintrag erstellen ODER einen vorhandenen Datensatz updaten.
Entscheidet selbstständig, ob der Eintrag per UPDATE oder INSERT in die Datenbank
eingefügt bzw. ein vorhandener Datensatz aktualisiert werden muss. Die Daten werden
direkt persistiert!
Beispiel für Übergabe eines Tabellennamens und eines Arrays:
// keine uid übergeben? Dann INSERT eines neuen Datensatzes
\nn\t3::Db()->save('table', ['bodytext'=>'...']);
// uid übergeben? Dann UPDATE vorhandener Daten
\nn\t3::Db()->save('table', ['uid'=>123, 'bodytext'=>'...']);
Copied!
Beispiel für Übergabe eines Domain-Models:
// neues Model? Wird per $repo->add() eingefügt
$model = new \My\Nice\Model();
$model->setBodytext('...');
$persistedModel = \nn\t3::Db()->save( $model );
// vorhandenes Model? Wird per $repo->update() aktualisiert
$model = $myRepo->findByUid(123);
$model->setBodytext('...');
$persistedModel = \nn\t3::Db()->save( $model );
Copied!
@param mixed $tableNameOrModel
@param array $data
@return mixed
Source Code
public function save( $tableNameOrModel = '', $data = [] )
{
if (\nn\t3::Obj()->isModel( $tableNameOrModel )) {
$uid = \nn\t3::Obj()->get( $tableNameOrModel, 'uid' ) ?: null;
$method = $uid ? 'update' : 'insert';
} else {
$uid = $data['uid'] ?? null;
$method = ($uid && $this->findByUid( $tableNameOrModel, $uid )) ? 'update' : 'insert';
}
return $this->$method( $tableNameOrModel, $data );
}
Copied!