iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Laravel模型事件如何使用
  • 449
分享到

Laravel模型事件如何使用

2023-07-04 20:07:21 449人浏览 薄情痞子
摘要

这篇“Laravel模型事件如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Laravel模型事件如何使用”文章吧。我

这篇“Laravel模型事件如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Laravel模型事件如何使用”文章吧。

我们的第一种方法使用模型的静态引导方法来注册行为。这使我们能够直接在模型上工作,并在模型为 created 。

declare(strict_types=1);namespace App\Models;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Str;class Office extends Model{    public static function boot(): void    {        static::creating(fn (Model $model) =>            $model->uuid = Str::uuid(),        );    }}

这种方法非常适合对模型事件的小而直接的反应,比如添加 UUID ,因为它非常容易理解,而且你可以准确地看到模型上正在发生的事情。这种方法最大的问题是代码重复,如果你有多个模型需要分配 UUID ,你将重复做相同的事情。

这很好地引导我们进入第二种方法,使用一个特征。在 Laravel 中,如果你在 trait 上创建一个以 boot 开头并以 trait 名称结尾的方法,你的模型可以继承 trait 并自动启动它们。这是一个例子:

declare(strict_types=1);namespace App\Models\Concerns;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Str;trait HasUuid{    public static function bootHasUuid(): void    {        static::creating(fn (Model $model) =>            $model->uuid = Str::uuid(),        );    }}

使用特征允许你将此行为添加到需要它且易于实现的每个模型中。我最大的缺点是,当多个特征想要利用同一个模型事件时,堆叠这些行为可能会导致问题。他们开始争夺优先权,很快就会变得一团糟。

这将我们引向下一个选项,模型观察者。模型观察者是一种基于类的方法来响应模型事件,其中方法对应于被触发的特定事件。

declare(strict_types=1);namespace App\Observers;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Str;class OfficeObserver{    public function creating(Model $model): void    {        $model->uuid = Str::uuid();    }}

这个类需要在某个地方注册,在服务提供者或模型本身(这是我推荐的地方)。在模型中注册这个观察者可以在模型级别上看到改变雄辩行为的副作用。将其隐藏在服务提供商中的问题在于,除非每个人都知道它的存在,否则很难知道。这种方法的最大缺点是它的可见性。在我看来,正确使用这种方法非常棒。

解决此问题的另一种方法是利用 Eloquent 模型本身的$dispatchesEvents 属性。这是每个 Eloquent 模型上的一个属性,它允许你列出要侦听的事件以及为这些事件调用的类。

declare(strict_types=1);namespace App\Models;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Str;class Office extends Model{    protected $dispatchesEvents = [        'creating' => SetModelUuid::class,    ];}

SetModelUuid 将在 Eloquent 模型的生命周期中被实例化,这是你向模型添加行为和属性的机会。

declare(strict_types=1);namespace App\Models\Events;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Str;class SetModelUuid{    public function __construct(Model $model)    {        $model->uuid = Str::uuid();    }}

这种方法是最简洁和最容易理解的方法之一,因为模型有很多可见性,并且你可以轻松地在模型之间共享这个类。你将面临的最大问题是是否需要在模型事件上触发多个操作。

总之,老实说,没有正确的方法可以做到这一点。你可以选择上述任何一种方法,它们都会起作用,但你应该选择适合你和你的特定用例的方法。我希望看到有关此特定功能的更多选项。

例如,如果你需要在模型事件上向模型添加多个属性,则观察者是一个不错的选择。然而,这是最好的选择吗?如果我们使用 dispatch events 属性为该模型运行自定义管道会怎样?

declare(strict_types=1);namespace App\Models\Pipelines;use App\Models\Officeclass OfficeCreatingPipeline{    public function __construct(Office $model)    {        app(Pipeline::class)            ->send($model)            ->through([                ApplyUuidProperty::class,                TapCreatedBy::class,            ]);    }}

如你所见,我们可以开始使用管道来为事件建模添加多个行为。现在,这还没有经过测试,所以我不知道 100% 是否可行 - 但作为一个概念,它可以开辟一种可组合的方法来对模型事件做出反应。

以上就是关于“Laravel模型事件如何使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Laravel模型事件如何使用

本文链接: https://www.lsjlt.com/news/347370.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Laravel模型事件如何使用
    这篇“Laravel模型事件如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Laravel模型事件如何使用”文章吧。我...
    99+
    2023-07-04
  • Laravel模型事件和模型事件在Trait中如何使用
    这篇文章主要介绍“Laravel模型事件和模型事件在Trait中如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel模型事件和模型事件在Trait中如何使用”文章能帮助大家解决问题。...
    99+
    2023-07-05
  • 详解Laravel模型事件和模型事件在Trait中的使用
    目录模型事件事件类型boot 方法和事件注册boot 在 traits 中的使用boot(启动) 和 initialize(初始化)Boot(启动)Initialize (初始化)模...
    99+
    2023-03-07
    Laravel模型事件Trait Laravel Trait
  • 如何使用Laravel实现模型关联
    这篇文章主要介绍了如何使用Laravel实现模型关联的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Laravel实现模型关联文章都会有所收获,下面我们一起来看看吧。一对一一对一关联是目前存在的最基本的关...
    99+
    2023-07-04
  • Unity如何实现模型点击事件
    这篇文章给大家分享的是有关Unity如何实现模型点击事件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。模型点击事件监听触发模型点击事件的必要条件需要触发模型点击事件的模型身上必须要挂载Collider ...
    99+
    2023-06-15
  • Laravel如何获取模型信息
    本篇内容主要讲解“Laravel如何获取模型信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel如何获取模型信息”吧!Laravel 模型信息 是 Spatie 的一个包,用于获取有...
    99+
    2023-07-04
  • Laravel模型的get find first怎么使用
    本文小编为大家详细介绍“Laravel模型的get find first怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel模型的get find first怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-27
  • 在Laravel中如何使用数据库事务
    小编给大家分享一下在Laravel中如何使用数据库事务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是数据库事务在我们开始研究 Laravel 的数据库事务之前,让我们先看看它们是什么以及它们如何有益。对于什么是数据库...
    99+
    2023-06-22
  • Laravel如何实现视图和模型操作
    本篇内容主要讲解“Laravel如何实现视图和模型操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel如何实现视图和模型操作”吧!视图简介:视图包含了应用程序渲染的HTML数据,并将...
    99+
    2023-07-04
  • Laravel应用程序中怎么使用模型工厂
    本文小编为大家详细介绍“Laravel应用程序中怎么使用模型工厂”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel应用程序中怎么使用模型工厂”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Laravel...
    99+
    2023-07-04
  • 如何在Laravel中使用NumPy数据类型?
    Laravel是一款流行的PHP框架,它提供了丰富的工具和组件来帮助开发者构建高效、可靠的Web应用程序。NumPy是一款Python科学计算库,它提供了许多高级的数据类型和函数,可以帮助处理大规模数据集。在本文中,我们将介绍如何在Lara...
    99+
    2023-07-19
    numy laravel 数据类型
  • C#如何使用delegate类型设计自定义事件
    这篇文章主要介绍C#如何使用delegate类型设计自定义事件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用delegate类型设计自定义事件在C#编程中,除了Method和Property,任何Class都可以...
    99+
    2023-06-04
  • three.js Mool3D模型类如何使用
    这篇文章主要介绍“three.js Mool3D模型类如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“three.js Mool3D模型类如何使用”文章能帮助大家解决问题。...
    99+
    2023-07-05
  • C# 中如何使用Direct3D模型
    今天就跟大家聊聊有关C# 中如何使用Direct3D模型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# Direct3D模型由World 空间,View 空间和光源组成。Worl...
    99+
    2023-06-17
  • Laravel事件系统怎么用
    这篇文章主要介绍Laravel事件系统怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Laravel 事件系统用法总结Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件类保...
    99+
    2023-06-25
  • JavaScript事件类型怎么使用
    本篇内容介绍了“JavaScript事件类型怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Jav...
    99+
    2024-04-02
  • Laravel如何快速创建简单事件流
    这篇文章主要介绍“Laravel如何快速创建简单事件流”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel如何快速创建简单事件流”文章能帮助大家解决问题。先决条件在开始之前,你需要在机器上安...
    99+
    2023-07-04
  • Laravel模型时间戳使用小技巧有哪些
    这篇文章主要介绍Laravel模型时间戳使用小技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!默认情况下,Laravel Eloquent 模型默认数据表有 created_at 和 updated_at 两...
    99+
    2023-06-22
  • 如何实现观察者模式及Spring中的事件编程模型
    这篇“如何实现观察者模式及Spring中的事件编程模型”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来...
    99+
    2024-04-02
  • Java设计模式的事件模型详解
    目录监听模式参与的角色事件、事件源、监听器之间的关系举个粒子总结监听模式 事件模型实现了监听模式,监听模式简单来说就是事件源经过事件的封装传给监听器,当事件源触发事件后,监听器接收到...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作