在Laravel雄辩的模型中使用引导方法进行CRUD事件侦听和缓存重置
#网络开发人员 #php #laravel #blog

雄辩中的启动方法简介

在Laravel雄辩的ORM中,当实例化雄辩模型时,将调用引导方法。此方法提供了一个方便的地方注册事件听众或执行其他设置任务。

通过使用引导方法,您可以保持模型逻辑组织且易于维护。在这篇文章中,我们将探讨如何使用启动方法在创建或更新模型时侦听CRUD事件并重置缓存。

让我们使用示例理解它:

假设您有一个带有Usermodel的Laravel应用程序,该应用程序经常被访问和更新。为了加快查询并减少数据库加载,您决定使用Laravel的CacheFaã§ade来缓存用户数据。

要缓存用户数据,您需要使用唯一的缓存键存储它。您可以将用户的ID用作缓存键,但是当用户数据更改时会发生什么?每次更新用户时,您都需要更新缓存密钥,以确保缓存不是陈旧的。

要自动化此过程,您可以使用启动方法来侦听updatingevents上的updatingevents,并为创建或更新的用户重置cache

注册活动听众

要收听CRUD事件,您可以使用creatingcreatedupdatingupdatedupdatedsavingsavingsaveddeletingdeletingdeleted方法在模型的静态启动方法上进行注册。

在此示例中,我们将使用creatingand updating事件来重置正在创建或更新的用户的缓存。

这是您可以在用户模型的引导方法中定义事件侦听器的方法:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;

class User extends Model
{
    protected static function booted()
    {

        static::creating(function ($user) {
            Cache::forget('user_' . $user->id);
        });

        static::updating(function ($user) {
            Cache::forget('user_' . $user->id);
        });
    }
}

重置缓存

要重置模型的缓存,您可以使用Laravel的缓存立面。缓存外观提供了一个简单的API,用于从各种缓存后端存储和检索数据。

例如,要通过其ID缓存用户模型,您可以使用CacheFaã§ade的记忆方法:

$userId = 1;

$user = Cache::remember('user_' . $userId, $minutes, function () use ($userId) {
    return User::find($userId);
});

在上面的代码中,记住方法在指定的分钟数中使用ID 1的用户模型缓存。如果尚未设置缓存,请记住通过的闭合来检索数据并缓存。

为用户创建或更新用户的重置缓存,我们使用忘记方法

结论

在这篇文章中,我们探索了如何在雄辩模型中使用启动方法来聆听CRUD事件并在创建或更新模型时重置缓存。通过使用事件侦听器和缓存faã§ade,您可以保持模型逻辑且易于维护。