РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
126 of 1392 menu

Метод deleteQuietly

Метод deleteQuietly применяется к экземпляру модели Eloquent и выполняет удаление записи из базы данных без запуска событий deleting и deleted. В отличие от стандартного метода delete, который инициирует события, этот метод позволяет выполнить удаление в обход всех обработчиков событий, что может быть полезно для массовых операций или когда нужно избежать побочных эффектов. Метод возвращает bool - результат выполнения операции удаления.

Синтаксис

<?php $model->deleteQuietly(); ?>

Метод не принимает параметров и возвращает true в случае успешного удаления или false в случае неудачи.

Пример

Давайте удалим статью с идентификатором 5 без запуска событий:

<?php namespace App\Http\Controllers; use App\Models\Article; class ArticleController extends Controller { public function deleteArticle() { $article = Article::find(5); if ($article) { $res = $article->deleteQuietly(); if ($res) { echo "Article deleted successfully without events"; } else { echo "Failed to delete article"; } } else { echo "Article not found"; } } } ?>

Результат выполнения кода:

"Article deleted successfully without events"

Пример

Сравним работу методов delete и deleteQuietly с использованием событий модели:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected static function booted() { static::deleting(function ($article) { echo "Deleting article: " . $article->id; }); static::deleted(function ($article) { echo "Article deleted: " . $article->id; }); } } ?>
<?php namespace App\Http\Controllers; use App\Models\Article; class ArticleController extends Controller { public function compareDeleteMethods() { // Using standard delete method - events will be triggered $article1 = Article::find(1); if ($article1) { $article1->delete(); } // Using deleteQuietly method - events will not be triggered $article2 = Article::find(2); if ($article2) { $article2->deleteQuietly(); } echo "Both operations completed"; } } ?>

Результат выполнения кода:

"Deleting article: 1" "Article deleted: 1" "Both operations completed"

Как видно из примера, при использовании deleteQuietly события не запускаются, в отличие от метода delete.

Пример

Использование метода deleteQuietly в цикле для массового удаления записей:

<?php namespace App\Http\Controllers; use App\Models\Article; class ArticleController extends Controller { public function deleteOldArticles() { $oldArticles = Article::where('created_at', '<', now()->subYear())->get(); $deletedCount = 0; foreach ($oldArticles as $article) { if ($article->deleteQuietly()) { $deletedCount++; } } echo "Deleted $deletedCount old articles without events"; } } ?>

Результат выполнения кода:

"Deleted 15 old articles without events"

Смотрите также

  • метод delete,
    который удаляет модель с запуском событий
  • метод forceDelete,
    который принудительно удаляет модель из базы данных
  • метод restore,
    который восстанавливает мягко удалённые модели
  • метод saveQuietly,
    который сохраняет модель без запуска событий
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить