public function delete($conditions = [])
{
$entityOrArray = $conditions;
$beforeEvent = 'beforeDelete';
$afterEvent = 'afterDelete';
if (is_object($conditions)) {
$conditions = [$this->primaryKeyField() => $this->primaryKey($conditions)];
} elseif (is_array($conditions)) {
$beforeEvent = 'beforeDeleteConditions';
$afterEvent = 'afterDeleteConditions';
}
// Run beforeDelete to know whether or not we can continue
if (false === $this->eventEmitter()->emit($beforeEvent, [$entityOrArray, $this])) {
return false;
}
$query = $this->queryBuilder()->delete($this->table())->where($conditions);
$result = $this->resolver()->exec($query);
// Run afterDelete
$this->eventEmitter()->emit($afterEvent, [$entityOrArray, $this, &$result]);
return $result;
}