0
点赞
收藏
分享

微信扫一扫

防止更新或保存 Laravel 模型

写心之所想 2024-06-19 阅读 28

例如,创建模型后,我不希望任何人能够再次更新该记录。相反,它应该被全新的记录覆盖并存档。

这是一个简单的特征,您可以在模型上使用它来禁用更新:

trait PreventsUpdating
{
    public static function bootPreventsUpdating()
    {
        static::updating(function (Model $model) {
            return false;
        });
    }
}

只需在您的模型上使用它,您将无法再更新它。

我们可以更进一步,使其更具可重用性和 DRY-er。

trait PreventsModelEvents
{
    public static function bootPreventsModelEvents()
    {
        foreach (static::$prevents as $event) {
            static::{$event}(function (Model $model) {
                return false;
            });
        }
    }
}

现在,当我们想在模型上使用它时,我们可以这样做:

class User extends Model
{
    use PreventsModelEvents;

    protected static $prevents = ['updating'];
}

当我们尝试更新User模型时,它将停止并返回 false。这也可以应用于其他事件,例如savingcreating

举报

相关推荐

0 条评论