Как удалить комментарии из базы данных?

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

Вот мой контроллер:

$article = \DB::table("events")
    ->where("id", $id)
    ->select("id", "subject", "information", "public", "category_id", "event_type_id", "country", "address", "city", "starts", "ends", "organizer", "website", "email", "telephone")
    ->first();

    $data['article'] = $article;

$event_comm = EventComment::where('event_id', $id)->get();


return view("admin.editEvent", $data)
            ->with(compact('event_comm'));

Моя функция удаления комментариев:

public function deleteComment($type, $id)
    {
        if ($type == "Event")
        {
            $comment = \App\EventComment::find($id);
        }
    if ($type == "Opinion")
        {
            $comment = \App\OpinionComment::find($id);
        }
         $comment->delete();

        return redirect('admin/comments'); 
    }



Маршрут для удаления комментария

Route::get('admin/article/deleteComment/{type?}/{id?}', 'ArticleController@deleteComment');

Моя кнопка

 <button href = "{{ url('admin/article/deleteComment/'.$article['type'].'/'.$article['id']) }}" role = "button" class = "btn btn-xs btn-danger" onclick = "return confirm('Are you sure you want to delete this comment?');">Delete <i class = "fa fa-trash"></i></button>

вы передаете идентификатор комментария ..? или идентификатор события?

Karan 11.07.2019 11:43
{type?}/{id?} - Почему вопросительные знаки? Глядя на контроллер, оба аргумента должны быть обязательными.
M. Eriksson 11.07.2019 11:43

так я должен удалить вопросительные знаки?

Andrei Nagy 11.07.2019 11:46

Вы также никогда не проверяете, действительно ли вы получили комментарий, прежде чем пытаться его удалить. Если кто-то передаст недопустимый тип или идентификатор, вы не получите комментарий в ответ. Выполните некоторую отладку, чтобы убедиться, что все значения соответствуют вашим ожиданиям и что $comment определено.

M. Eriksson 11.07.2019 11:46

Знаки вопроса для аргументов необязательный. Поэтому, если вы посетите admin/article/deleteComment/, вы получите сообщение об ошибке, поскольку контроллер ожидает два аргумента, но не получит ни одного. Вот руководство по параметрам маршрута

M. Eriksson 11.07.2019 11:47

да ты прав. У меня есть эта ошибка: `ErrorException в строке ArticleController.php 510: отсутствует аргумент 1 для App\Http\Controllers\ArticleController::deleteComment()`

Andrei Nagy 11.07.2019 11:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
159
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это

{!! Form::open(['method' => 'DELETE', 'route'=>['comments.destroy', $comment->id], 'style'=> 'display:inline', 'onsubmit' => 'return confirm("Are you sure you want to delete?")']) !!}
{!! Form::button('<i class = "fa fa-trash"></i>',['type'=>'submit', 'class'=> 'btn btn-danger']) !!}
{!! Form::close() !!}

Создайте такой маршрут

Route::delete('comments/{id}',['uses'=>'CommentsController@destroy', 'as' => 'comments.destroy']);

Хороший ответ включает объяснение того, почему OP должен «попробовать это». Что вы изменили и почему? Кроме того, глядя на код, ОП также нуждается в type-значении, чтобы знать, какой тип комментария нужно удалить.

M. Eriksson 11.07.2019 11:49

Спасибо за ответ. Но на данный момент не работает, когда я нажимаю кнопку редактирования, мой модальный режим не открывается, чтобы увидеть мои поля для редактирования. Вот как должно быть: imgur.com/a/RxQKIT4

Andrei Nagy 11.07.2019 11:53
Ответ принят как подходящий

Вы должны попробовать это:

Пожалуйста, измените свой маршрут, как

Route::get('admin/article/deleteComment/{type}/{id}', 'ArticleController@deleteComment')->name('commentdelete');

Ваша кнопка нравится:

 <button href = "{{ route('commentdelete',[$article['type'],$article['id']]) }}" role = "button" class = "btn btn-xs btn-danger" onclick = "return confirm('Are you sure you want to delete this comment?');">Delete <i class = "fa fa-trash"></i></button>

Спасибо за ваш ответ, сэр. Вы знаете, почему мой модальный модуль не открывается, когда я нажимаю кнопку редактирования? Без href = "{{ route('commentdelete',[$article['type'],$article['id']]) }}" он работает, но мне это нужно, как его правильно использовать? Я использую laravel 5.2

Andrei Nagy 11.07.2019 12:10

Да, это правильный метод для laravel, и вы можете использовать URL-адрес и имя маршрута в теге привязки.

AddWeb Solution Pvt Ltd 11.07.2019 12:13

Если мой ответ работает для вас, пожалуйста, примите и проголосуйте за мой ответ.

AddWeb Solution Pvt Ltd 11.07.2019 12:13

Подождите, пожалуйста, вы знаете, почему мое модальное окно сейчас не открыто? Вот код моего модального окна редактирования: <a article_type = "{{ $article['type'] }}" pop_up_id = "{{ $article['type'] }}_{{ $article['id'] }}" role = "button" class = "btn btn-xs btn-warning modify"> <i class = "fa fa-pencil-square-o"></i> </a> <div class = "modal" id = "myModal_{{ $article['type'] }}_{{ $article['id'] }}" tabindex = "-1" role = "dialog" aria-labelledby = "myModalLabel" aria-hidden = "true" style = "display: none;">

Andrei Nagy 11.07.2019 12:17

Потому что, когда вы делаете какой-либо маршрут в модальном href, тогда, когда вы нажимаете кнопку в этот раз, они перенаправляют на маршрут, поэтому, пожалуйста, когда вы используете href для модального всплывающего окна, просто напишите href = "#"

AddWeb Solution Pvt Ltd 11.07.2019 12:21

Давайте продолжить обсуждение в чате.

Andrei Nagy 11.07.2019 12:25

Другие вопросы по теме