【问题标题】:Limit the Insert of Records in Laravel在 Laravel 中限制记录的插入
【发布时间】:2022-01-04 06:01:47
【问题描述】:

限制 Laravel 中的记录插入

当前我想要实现的是我想将记录限制为假设 100 现在当我们尝试插入新记录时,我们应该删除一个(第一个)记录并插入新创建的记录

目前我正在像这样手动操作

if(Logs::count() >= 100){ Logs::fist()->delete(); //fuction call again } 
else{ Logs::create(); }

我想简单地做到这一点并尝试集中化

【问题讨论】:

  • 你试过模式观察者吗?
  • 你用的是什么数据库?
  • @apokryfos iam 使用 mysql
  • @ManojKiranAppathurai 你的意思是模型观察者吗,是的,我确实找到了解决方案,谢谢

标签: laravel eloquent query-builder laravel-query-builder


【解决方案1】:

是的,经过一些研究,我找到了解决方案,我使用了模型观察器

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();
            }
           
        });
    }

【讨论】:

    【解决方案2】:

    您不需要从数据库中获取所有记录,您只需要记录数

    /**
         * 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();
                    }
                }
            });
        }
    

    【讨论】:

    • 上述解决方案有帮助
    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多