Dalam Laravel, saveQuietly() ialah kaedah yang tersedia pada model Eloquent yang membolehkan anda menyimpan model tanpa melancarkan sebarang acara, seperti mencipta, mencipta, mengemas kini, mengemas kini dan Eloquent lain acara model. Ini boleh berguna dalam situasi di mana anda ingin mengemas kini atau menyimpan data tanpa mencetuskan sebarang tindakan tambahan yang berkaitan dengan peristiwa tersebut, seperti pengelogan, pemberitahuan atau pengesahan data.
Berikut ialah panduan langkah demi langkah dengan contoh praktikal saveQuietly() dalam Laravel, termasuk penjelasan terperinci bagi setiap bahagian.
Bayangkan anda mempunyai model Pengguna, dan setiap kali pengguna dikemas kini, peristiwa mencetuskan yang menghantar pemberitahuan kepada pengguna. Walau bagaimanapun, dalam beberapa kes tertentu (seperti kemas kini pentadbir atau tugas penyelenggaraan latar belakang), anda mungkin mahu mengemas kini maklumat pengguna secara senyap tanpa mencetuskan pemberitahuan ini.
Dalam model Pengguna anda, anda mungkin mempunyai pendengar acara untuk mengemas kini dan mengemas kini acara, yang akan dipecat apabila pengguna dikemas kini.
Contoh model Pengguna dengan acara:
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()); }); } }
Di sini, setiap kali pengguna dikemas kini:
Apabila anda mengemas kini pengguna menggunakan save(), acara ini akan dicetuskan.
Contoh:
$user = User::find(1); $user->status = 'active'; $user->save();
Hasil Jangkaan: Acara pengemaskinian dan kemas kini dicetuskan, yang bermaksud entri log akan dibuat dan pengguna akan dimaklumkan.
Untuk mengelak daripada mencetuskan peristiwa ini (cth., jika pentadbir mengemas kini status pengguna sebagai sebahagian daripada operasi pukal), anda boleh menggunakan saveQuietly().
Contoh:
$user = User::find(1); $user->status = 'inactive'; $user->saveQuietly();
Dengan saveQuietly(), baik acara kemas kini mahupun kemas kini tidak dicetuskan, bermakna:
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()); }); } }
$user = User::find(1); $user->status = 'active'; $user->save();
$user = User::find(1); $user->status = 'inactive'; $user->saveQuietly();
saveQuietly() bermanfaat dalam senario seperti:
Begini cara anda boleh memasukkannya ke dalam pengawal Laravel untuk mengendalikan kemas kini pentadbir:
$user = User::find(1);
Menggunakan saveQuietly() boleh menyelaraskan tugas dengan ketara apabila pengendalian acara tidak diperlukan, memberikan anda kawalan yang lebih besar ke atas tingkah laku model Eloquent dalam Laravel.
Atas ialah kandungan terperinci Bagaimana dan Bila Menggunakan saveQuietly() untuk Kemas Kini Senyap dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!