Удаление аксиом Laravel и Vuejs не дает ошибки, но не удаляет

Я создал веб-маршрут, который должен удалить контакт на основе определенного идентификатора, и он выглядит так:

Route::delete('/api/deleteContact/{id}', 'ContactController@destroy');

Затем внутри контроллера у меня есть следующее:

public function destroy($id)
{
    // delete a contact by id
    return response()->json(Contact::whereId($id), 200);
}

Внутри одного из моих файлов шаблона блейда я вызываю компонент Vue, который отображает список контактов:

<table class = "table">
    <thead>
        <tr>
            <th scope = "col">#</th>
            <th scope = "col">Name</th>
            <th scope = "col">Phone</th>
        </tr>
    </thead>
    <tbody>
        <tr v-for = "contact in contacts">
            <td> {{ contact.id }} </td>
            <td> {{ contact.name }} </td>
            <td> {{ contact.phone }} </td>
            <td><button class = "btn btn-secondary">Edit</button></td>
            <td><button @click = "deleteContact(contact.id)" class = "btn btn-danger">Delete</button></td>
        </tr>
    </tbody>
</table>

Кнопка удаления вызывает метод deleteContact и получает соответствующий идентификатор контакта.

Метод выглядит следующим образом:

deleteContact(id){
    axios.delete('/api/deleteContact/' + id)
    .then(res => {
        for(var i = 0; i < this.contacts.length; i++) {
            if (this.contacts[i].id == id) {
                this.contacts.splice(i, 1);
            }
        }
    })
    .catch(err => console.info(err));
}

Когда я нажимаю удалить, происходит обещание (затем), однако после обновления страницы я заметил, что ничего не было удалено, и я не вижу ошибок в консоли.

Как я могу успешно удалить контакт на основе идентификатора, переданного в функцию deleteContact?

Contact::whereId($id) это не удалит, вам нужно добавить ->delete() в конце

Sagar Gautam 26.07.2019 20:33

Не могу поверить, что я этого не заметил. Цените поддержку

user agent 26.07.2019 20:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны добавить удаление в конце запроса следующим образом:

public function destroy($id)
{
    // delete a contact by id
    return response()->json(Contact::where('id',$id)->delete(), 200);
}

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