Db::save() 

\nn\t3::Db()->save($tableNameOrModel = '', $data = []); 

Create database entry OR update an existing data record.

Decides independently whether the entry should be added to the database via UPDATE or INSERT or whether an existing data record needs to be updated. The data is persisted directly!

Example for transferring a table name and an array:

// no uid transferred? Then INSERT a new data set
\nn\t3::Db()->save('table', ['bodytext'=>'...']);

// pass uid? Then UPDATE existing data
\nn\t3::Db()->save('table', ['uid'=>123, 'bodytext'=>'...']);
Copied!

Example for transferring a domain model:

// new model? Is inserted via $repo->add()
$model = new \My\Nice\Model();
$model->setBodytext('...');
$persistedModel = \nn\t3::Db()->save( $model );

// existing model? Is updated via $repo->update()
$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!