Метод forceDelete
Метод forceDelete применяется к экземпляру модели Eloquent и выполняет безвозвратное удаление записи из базы данных. В отличие от метода delete, который при использовании трейта SoftDeletes лишь устанавливает отметку времени в поле deleted_at, forceDelete полностью удаляет строку из таблицы. Метод возвращает bool - true при успешном удалении или false в случае ошибки.
Синтаксис
<?php
$model->forceDelete();
?>
Пример
Давайте удалим статью с id равным 1 с помощью метода forceDelete:
<?php
use AppModelsArticle;
$article = Article::find(1);
if ($article) {
$res = $article->forceDelete();
echo $res;
}
?>
Результат выполнения кода:
true
Пример
Если модель использует мягкое удаление, метод delete просто установит deleted_at, а forceDelete удалит запись окончательно. Давайте сравним оба подхода на модели Article:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentSoftDeletes;
class Article extends Model
{
use SoftDeletes;
protected $fillable = ['title', 'content'];
}
?>
<?php
use AppModelsArticle;
$article = Article::find(2);
if ($article) {
$res = $article->forceDelete();
echo $res;
}
?>
Результат выполнения кода:
true
Пример
Метод forceDelete также доступен через построитель запросов для массового удаления записей:
<?php
use AppModelsArticle;
$res = Article::where('status', 'draft')->forceDelete();
echo $res;
?>
Результат выполнения кода:
5
Пример
Используем метод forceDelete для удаления всех записей в таблице:
<?php
use AppModelsArticle;
$res = Article::query()->forceDelete();
echo $res;
?>
Результат выполнения кода:
10
Смотрите также
-
метод
delete,
который выполняет мягкое удаление модели -
метод
restore,
который восстанавливает мягко удалённую модель -
метод
trashed,
который проверяет, была ли модель мягко удалена -
метод
withTrashed,
который включает мягко удалённые записи в запрос