Удаление статей из базы

176
30 марта 2019, 02:40

Ребят здравствуйте подскажите пожалуйста 1 вопрос есть пара статей в базе, Мне нужно при заходе на роут получить объект статьи по id и после этого удалить статью. Если статьи с таким id нет, то выдавать соответствующее сообщение. Если же статья была, то вывести объект с помощью var_dump после удаления.

Роут добавил,Метод в абстрактном классе (получение id статьи добавил), в контролере метод написал, Но работает совсем не так как нужно, он удаляет статьи если в методе контроллера указывать id напрямую так

public function delete(): void
 {
     $article = Article::getById(7);
     if ($article == $id) {
         echo 'Статья удалена';
     } $article->delete();
      var_dump($article);
 }

но мне нужно что-бы статьи удалялись в зависимости от того какой id вводишь в адресной строке сейчас пишу так, то есть если такой id есть удалять статью если нет выводить сообщение о том что такой статьи нет в базе Но так он не хочет работать и статью не удаляет из базы не совсем понимаю что делать дальше так как только учусь

public function delete($id): void
     {
         $article = Article::getById($id);
         if ($article == $id) {
             echo 'Статья удалена';
         } $article->delete();
          var_dump($article);
     }

полностью код из всех файлов

файл ArticleController.php https://sharecodesnippet.com/163

файл routes.php https://sharecodesnippet.com/164

файл ActiveRecordEntity.php https://sharecodesnippet.com/165

Answer 1

Вот у вас в роутах реализуется просмотр:

'~^articles/(\d+)$~' => [\MyProject\Controllers\ArticlesController::class, 'view'],

Что здесь указано? Здесь указано что некий урл вида articles/(\d+) связан с методом view контроллера. Знаете, что такое (\d+)? Это регулярное выражение. Не вдаваясь в подробности регулярок и как реализована передача параметра в контроллер, работает это так: по шаблону регулярки (\d+) из урла выцепляется ИД и передается как аргумент в метод view(int $articleId).

Следовательно, вам нужно сделать что? Нарисовать схожий шаблон урла в роутах:

'~^articles/delete/(\d+)$~' => [\MyProject\Controllers\ArticlesController::class, 'delete'],

И объявить метод delete как:

public function delete(int $id): void
{
    var_dump($id);
    // дальше делайте что хотите
}
READ ALSO
Как вовремя перебора массива (foreach) сравнить значение ключа текущей итерации с ключом из предыдущей и вывести результат по условию?

Как вовремя перебора массива (foreach) сравнить значение ключа текущей итерации с ключом из предыдущей и вывести результат по условию?

Я только осваиваю язык, просьба не пинать если чтоЯ получаю данные из SQL в такой массив

178
Как отправить данные на email желательно, на php

Как отправить данные на email желательно, на php

Есть такая страница корзины:

182
Yandex MAP API + Mysql

Yandex MAP API + Mysql

мне нужно сделать фильтр меток на карте используя Yandex map APIВопрос заключается в том что нужно вывести данные из базы и потом используя фильтры...

218
Обработка exec() в PHP

Обработка exec() в PHP

Необходимо запустить python скрипт из phpИспользую следующий код

157