限制 Laravel 中記錄的插入
當前我想要實作的是我想將記錄限制為現在假設為 100,當我們嘗試插入新記錄時,我們應該洗掉一個(第一個)記錄并插入新創建的記錄
目前我正在像這樣手動操作
if(Logs::count() >= 100){ Logs::fist()->delete(); //fuction call again }
else{ Logs::create(); }
我想簡單地做到這一點,并試圖集中進行
uj5u.com熱心網友回復:
是的,經過一些研究,我找到了解決方案,我使用了模型觀察器
protected static function boot()
{
parent::boot();
static::created(function ($model) {
/* Getting the log limt */
$setting = Setting::where(['option' => 'log_queue_size'])->first();
if ($setting) {
$limit = $setting->value['log_queue_size'] ?? 100;
$logQuery = Log::get();
$keepIds = $logQuery->take($limit)->pluck('id');
Log::whereNotIn('id', $keepIds)->delete();
}
});
}
uj5u.com熱心網友回復:
您不需要從資料庫中獲取所有記錄,您只需要記錄數
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
static::created(function ($model) {
/* Getting the log limt */
$setting = Setting::where(['option' => 'log_queue_size'])->first();
if ($setting) {
$limit = $setting->value['log_queue_size'] ?? 100;
$actualCount = Log::query()->count();
if ($actualCount > $limit) {
$recordsToDelete = $actualCount - $limit;
Log::query()->latest()->take($recordsToDelete)->delete();
}
}
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367528.html
