Чат Telegram
Группа ВКонтакте
Удаление в Active Record на PHP

Удаление в Active Record

Всем привет! Сегодня мы дошли до самого интересного – операции удаления в Active Record :)

Удаление объекта мы будем производить вот так:

$article->delete();

То есть берём какой-то объект-наследник класса ActiveRecordEntity и вызываем у него метод delete(). Это должно привести к двум вещам:

  1. Должна удалиться запись в базе данных, соответствующая этому объекту
  2. Свойство id у этого объекта должно стать null (ведь его больше нет, логично же)

Удаление записей из таблиц выполняется следующим запросом:

DELETE FROM `название таблицы` WHERE id = :id;

А дальше идёт текст для совсем ленивых. Если Вы не такой – напишите метод delete() самостоятельно – это очень просто.

Итак, создаём в нашем классе ActiveRecordEntity метод delete().

src/MyProject/Models/ActiveRecordEntity.php

public function delete(): void
{
    $db = Db::getInstance();
    $db->query(
        'DELETE FROM `' . static::getTableName() . '` WHERE id = :id',
        [':id' => $this->id]
    );
    $this->id = null;
}

Всё! Метод для удаления готов!
Испытать его я вам предлагаю самостоятельно. О том, что именно требуется сделать, вы узнаете в домашнем задании.

loader
Домашнее задание

Создайте роут для удаления статей - http://myproject.loc/articles/2/delete
При заходе на него получайте объект статьи по id и после этого удаляйте статью. Если статьи с таким id нет, то выдавайте соответствующее сообщение. Если же статья была, то выводите объект с помощью var_dump после удаления.

Логические задачи с собеседований