Laravel에서 자동 업데이트를 위해 saveQuietly()를 사용하는 방법과 시기

Mary-Kate Olsen
풀어 주다: 2024-10-28 22:41:02
원래의
808명이 탐색했습니다.

How and When to Use saveQuietly() for Silent Updates in Laravel

Laravel에서 saveQuietly()는 생성, 생성, 업데이트, 업데이트 및 기타 Eloquent와 같은 이벤트를 실행하지 않고 모델을 저장할 수 있는 Eloquent 모델에서 사용할 수 있는 메소드입니다. 모델 이벤트. 이는 로깅, 알림, 데이터 검증 등 해당 이벤트와 관련된 추가 작업을 트리거하지 않고 데이터를 업데이트하거나 저장하려는 상황에서 유용할 수 있습니다.

다음은 Laravel의 saveQuietly() 실습 예제와 각 부분에 대한 자세한 설명을 포함한 단계별 가이드입니다.

시나리오 예

사용자 모델이 있고 사용자가 업데이트될 때마다 사용자에게 알림을 보내는 이벤트가 트리거된다고 가정해 보세요. 그러나 일부 특정 경우(예: 관리자 업데이트 또는 백그라운드 유지 관리 작업)에는 이 알림을 트리거하지 않고 자동으로 사용자 정보를 업데이트할 수 있습니다.

saveQuietly() 구현 단계

1단계: 사용자 모델 및 이벤트 정의

사용자 모델에는 사용자가 업데이트될 때 실행되는 업데이트 및 업데이트된 이벤트에 대한 이벤트 리스너가 있을 수 있습니다.

이벤트가 있는 사용자 모델의 예:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = ['name', 'email', 'status'];

    protected static function booted()
    {
        // Event listener for updating
        static::updating(function ($user) {
            // Log or handle the update event
            \Log::info("User is being updated: {$user->id}");
        });

        // Event listener for updated
        static::updated(function ($user) {
            // Example action, such as sending a notification
            $user->notify(new \App\Notifications\UserUpdatedNotification());
        });
    }
}
로그인 후 복사
로그인 후 복사

여기서 사용자가 업데이트될 때마다:

  1. 업데이트 이벤트는 업데이트에 대한 정보를 기록합니다.
  2. 업데이트된 이벤트는 사용자에게 알림을 보냅니다.

2단계: 일반적으로 사용자 업데이트

save()를 사용하여 사용자를 업데이트하면 이러한 이벤트가 실행됩니다.

예:

$user = User::find(1);
$user->status = 'active';
$user->save();
로그인 후 복사
로그인 후 복사

예상 결과: 업데이트 및 업데이트 이벤트가 발생하여 로그 항목이 생성되고 사용자에게 알림이 전달됩니다.

3단계: saveQuietly()를 사용하여 이벤트 우회

이러한 이벤트가 발생하지 않도록 하려면(예: 관리자가 대량 작업의 일부로 사용자 상태를 업데이트하는 경우) saveQuietly()를 사용할 수 있습니다.

예:

$user = User::find(1);
$user->status = 'inactive';
$user->saveQuietly();
로그인 후 복사
로그인 후 복사

saveQuietly()를 사용하면 업데이트 이벤트나 업데이트 이벤트가 모두 실행되지 않습니다. 이는 다음을 의미합니다.

  • 업데이트에 대한 로그 항목이 생성되지 않습니다.
  • 사용자에게 알림이 전송되지 않습니다.

saveQuietly()의 단계별 설명

  1. 모델 찾기: 업데이트하려는 모델 인스턴스를 가져옵니다. 여기서는 User::find(1)을 사용하여 ID가 ​​1인 사용자를 검색합니다.
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = ['name', 'email', 'status'];

    protected static function booted()
    {
        // Event listener for updating
        static::updating(function ($user) {
            // Log or handle the update event
            \Log::info("User is being updated: {$user->id}");
        });

        // Event listener for updated
        static::updated(function ($user) {
            // Example action, such as sending a notification
            $user->notify(new \App\Notifications\UserUpdatedNotification());
        });
    }
}
로그인 후 복사
로그인 후 복사
  1. 모델 속성 수정: 모델에 필요한 속성을 변경합니다. 예를 들어 상태를 활성에서 비활성으로 변경합니다.
$user = User::find(1);
$user->status = 'active';
$user->save();
로그인 후 복사
로그인 후 복사
  1. 이벤트를 트리거하지 않고 저장: save() 대신 saveQuietly()를 사용하세요. 이렇게 하면 업데이트 또는 업데이트된 이벤트가 발생하지 않습니다.
$user = User::find(1);
$user->status = 'inactive';
$user->saveQuietly();
로그인 후 복사
로그인 후 복사

saveQuietly()를 사용해야 하는 경우

saveQuietly()는 다음과 같은 시나리오에서 유용합니다.

  • 대량 업데이트: 트리거 이벤트가 성능 문제로 이어질 수 있는 대량 업데이트를 수행하는 경우.
  • 관리자 재정의: 관리자가 알림이 필요하지 않은 업데이트를 수행하는 경우.
  • 백그라운드 프로세스: 사용자에게 알리거나 변경 사항을 기록할 필요 없이 기록을 수정하는 예약된 작업 또는 유지 관리 스크립트에 사용됩니다.
  • 검증/리스너 우회: 특정 업데이트가 표준 모델 리스너 또는 검증을 준수할 필요가 없는 경우

컨트롤러의 전체 예

관리자 업데이트를 처리하기 위해 이를 Laravel 컨트롤러에 넣는 방법은 다음과 같습니다.

   $user = User::find(1);
로그인 후 복사

요약

  • save()는 모든 관련 이벤트를 트리거하며 표준 업데이트에 유용합니다.
  • saveQuietly()는 이러한 이벤트를 우회하므로 추가 처리 없이 자동 또는 대량 업데이트에 유용합니다.

saveQuietly()를 사용하면 이벤트 처리가 불필요한 작업을 크게 간소화할 수 있어 Laravel에서 Eloquent 모델 동작을 더 효과적으로 제어할 수 있습니다.

위 내용은 Laravel에서 자동 업데이트를 위해 saveQuietly()를 사용하는 방법과 시기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!