Устранение ошибки «Вызов функции-члена delete() по нулевому значению» в Laravel 8

При работе с Laravel 8 вы можете столкнуться с сообщением об ошибке «Вызов функции-члена delete() при значении null». Эта ошибка обычно возникает при попытке вызвать метод delete()для нулевого объекта. В этой статье мы рассмотрим несколько способов решения этой проблемы на примерах кода.

Метод 1: проверьте, существует ли объект
Одна из распространенных причин этой ошибки — попытка удалить несуществующий объект. Чтобы избежать этого, вы можете проверить, существует ли объект, перед вызовом метода delete().

$user = User::find($id);
if ($user) {
    $user->delete();
} else {
    // Handle the case when the object does not exist
}

Метод 2: используйте метод findOrFail().
Вместо того, чтобы вручную проверять существование объекта, вы можете использовать метод findOrFail(), который автоматически генерирует ModelNotFoundException, если объект не найден.

$user = User::findOrFail($id);
$user->delete();

Метод 3. Проверка запроса
Если вы удаляете объект на основе пользовательского ввода, рекомендуется проверить запрос, прежде чем пытаться удалить объект. Вы можете использовать проверку запроса формы Laravel, чтобы убедиться в существовании объекта перед вызовом метода delete().

public function destroy(UserRequest $request, $id)
{
    $user = User::findOrFail($id);
    $user->delete();

    // Rest of the code
}

Метод 4: использование мягкого удаления
Laravel предоставляет удобный способ обработки удалений без окончательного удаления записей из базы данных с помощью мягкого удаления. При мягком удалении в таблицу добавляется столбец deleted_at, и при удалении объекта он помечается как удаленный, а не удаляется физически.

Чтобы использовать обратимое удаление, вам необходимо добавить признак Illuminate\Database\Eloquent\SoftDeletesв вашу модель и перенести базу данных, включив в нее столбец deleted_at.

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model
{
    use SoftDeletes;

    // Rest of the model code
}

После включения обратимого удаления вы можете использовать метод delete()как обычно, не сталкиваясь с ошибкой «Вызов функции-члена delete() при значении null».

Ошибка «Вызов функции-члена delete() при нулевом значении» в Laravel 8 возникает при попытке удалить нулевой объект. Реализовав методы, описанные в этой статье, вы сможете эффективно обработать ошибку и обеспечить бесперебойную работу ваших приложений Laravel.