Laravel удалить пользовательский возврат модели

Итак, я пытаюсь удалить модель, а затем вернуть response()->json([...]). По какой-то причине, когда я удаляю модель, она всегда возвращает NULL, что бы я ни делал.

Вот функция в модели User, которая используется для удаления данного пользователя.

/**
 * @return bool|\Illuminate\Http\JsonResponse|null
 * Delete user
 */
public function deleteUser()
{

    // If the admin deletes his own account we need to check if there is another admin. There must exists at least 1 admin
    if ($this->user_id == auth()->user()->user_id && (auth()->user->hasRole('admin'))) {
        if (User::whereHas('roles', function($query) { $query->where('id', 1); })->count() <= 1) {
            return response()->json([
                'success' => false,
                'message' => 'There must be another admin if you remove your own user.'
            ]);
        }
    }

   if (!$this->delete()) {
       return response()->json([
          'success' => false,
          'message' => 'Could not delete user!'
       ]);
   }

    return response()->json([
        'success' => true,
        'message' => 'User was deleted successfully!'
    ]);

Есть ли что-то, что мне не хватает, когда я хочу вернуть собственный ответ?

РЕДАКТИРОВАТЬ Вот метод контроллера

public function postDelete(User $user)
{
    $user->deleteUser();
}

Вы хотите иметь возможность удалить пользователя более чем в одном месте в вашем приложении, то есть у вас есть несколько мест, где пользователь может быть удален?

Rwd 13.03.2019 15:01

Неа. В настоящее время только из управления пользователями на панели инструментов.

Kaizokupuffball 13.03.2019 15:01

В таком случае, почему вы помещаете такую ​​логику в модель, а не просто сохраняете ее в контроллере?

Rwd 13.03.2019 15:02

Хороший вопрос. Я не знаю, почему я это делаю, мне так кажется лучше, но разве это плохая практика? Должны ли проверки/валидации быть в контроллере?

Kaizokupuffball 13.03.2019 15:04

Да, я определенно рекомендую просто держать его в своем контроллере. Можете ли вы показать метод контроллера, где вы вызываете deleteUser()?

Rwd 13.03.2019 15:08

Конечно, я отредактирую пост. Дай мне секунду.

Kaizokupuffball 13.03.2019 15:08
Стоит ли изучать 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 и хотите разрабатывать...
1
6
349
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам просто не хватает return в вашем методе контроллера:

public function postDelete(User $user)
{
    return $user->deleteUser();
}

Ух ты.. Всегда самые маленькие вещи... Спасибо за внимание и советы по сохранению некоторой логики в контроллере. Есть некоторые изменения, чтобы сделать. :D

Kaizokupuffball 13.03.2019 15:15

@Kaizokupuffball Все в порядке. Рад, что смог помочь! :)

Rwd 13.03.2019 15:15

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