Db::delete()
\nn\t3::Db()->delete($table = '', $constraint = [], $reallyDelete = false);
Delete database entry. Small and fine. Either a table name and the UID can be transferred - or a model.
Delete a data record by table name and uid or any constraint:
// Deletion based on the uid
\nn\t3::Db()->delete('table', $uid);
// Delete based on a custom field
\nn\t3::Db()->delete('table', ['uid_local'=>$uid]);
// Delete entry completely and irrevocably (do not just remove via flag deleted = 1)
\nn\t3::Db()->delete('table', $uid, true);
Copied!
Delete a data record per model:
\nn\t3::Db()->delete( $model );
Copied!
@param mixed $table
@param array $constraint
@param boolean $reallyDelete
@return mixed
Source Code
public function delete ( $table = '', $constraint = [], $reallyDelete = false )
{
if (\nn\t3::Obj()->isModel($table)) {
$model = $table;
$repository = $this->getRepositoryForModel( $model );
$repository->remove( $model );
$this->persistAll();
return $model;
}
if (!$constraint) return false;
if (is_numeric($constraint)) {
$constraint = ['uid' => $constraint];
}
$deleteColumn = $reallyDelete ? false : $this->getDeleteColumn( $table );
if ($deleteColumn) {
return $this->update( $table, [$deleteColumn => 1], $constraint );
}
$queryBuilder = $this->getQueryBuilder( $table );
$queryBuilder->delete($table);
foreach ($constraint as $k=>$v) {
if (is_array($v)) {
$queryBuilder->andWhere(
$queryBuilder->expr()->in( $k, $queryBuilder->createNamedParameter($v, Connection::PARAM_STR_ARRAY) )
);
} else {
$queryBuilder->andWhere(
$queryBuilder->expr()->eq( $k, $queryBuilder->createNamedParameter($v))
);
}
}
return $queryBuilder->executeStatement();
}
Copied!