diff --git a/src/Alias/Model.php b/src/Alias/Model.php index b96b4c2..ea3dd91 100644 --- a/src/Alias/Model.php +++ b/src/Alias/Model.php @@ -61,4 +61,8 @@ abstract class Model implements ModelInterface } $this->isDirty(); } + public function delete(): void + { + $this->getFactory()->get(get_class($this))->delete($this); + } } diff --git a/src/Alias/Model/Repository.php b/src/Alias/Model/Repository.php index 69767b3..084493a 100644 --- a/src/Alias/Model/Repository.php +++ b/src/Alias/Model/Repository.php @@ -100,6 +100,12 @@ abstract class Repository implements RepositoryInterface } return $model; } + public function delete(Model $model): void + { + $query = $this->getQueryBuilder()->delete($this->getTable())->where(['id = ?']); + $this->getConnection()->execute($query, [$model->getId()]); + } + public function fetchById(int $id): Model { $query = $this->getQueryBuilder() diff --git a/src/Concept/Model.php b/src/Concept/Model.php index d6f836d..d58d7ce 100644 --- a/src/Concept/Model.php +++ b/src/Concept/Model.php @@ -15,4 +15,5 @@ interface Model public function isDirty(): bool; public function save(): void; public function edit(array $data): void; + public function delete(): void; } diff --git a/src/Concept/Model/Repository.php b/src/Concept/Model/Repository.php index 9e5c9b9..c31de6a 100644 --- a/src/Concept/Model/Repository.php +++ b/src/Concept/Model/Repository.php @@ -23,6 +23,7 @@ interface Repository public function save(Model $model): void; public function edit(Model $model, array $data): Model; public function create(array $data): Model; + public function delete(Model $model): void; public function fetchById(int $id): Model; public function fetchAll(): array; }