Laravel 的 Events 及 Observers(一)
什么是事件?如果你在谷歌中搜索这个词,你会得到多个结果。例如,它会被定义为已经发生或被视为发生的一些事;一次事故,尤其是特别重大的。它也可以定义为发生在一段特定时期内特定地点的事。
我喜欢这两个定义,因为它们与我们的内容很符合。事实上,在某种意义上,你可以把这段特定的时期看作模型的生命周期。
你可以创建一个新的实例,更新现有实例,或删除它。你可以做的每个操作都涉及到两个事件。
从基础上来说:我刚刚创建了一条记录,我删除了那条记录,我正在更新那条记录,听起来很自然,对吗?
在当模型的生命周期中,当发生一些事的时候,Eloquent 会触发一些事件:
- creating
- created
- updating
- updated
- saving
- saved
- deleting
- deleted
- restoring
- restored
对于每一个操作,都对应两个独立的事件。正如你可能想象的,它们指的是单独的时刻。我们已创建操作作为实例:
你有一个 creating事件,可以理解为“创建操作即将发生”,而 created表示“事件已经发生了”。
科学家可能会说:
- creating:是表示 t – 1时刻
- created:是与 t + 1 时刻相关
所以,对于下面三个基本操作,都有两个对应的事件:创建 ( create)、更新 ( update) 和删除 ( delete)。
此外,你还可以看到另外两个操作:保存 ( save) 和恢复 ( restore)。但是,请不要担心,他们并不复杂:
- Save:你只需要知道, save操作是与 create和 update相关的。我们假设你需要添加一个行为,应用程序是创建一条新的记录还是更新一条已有的记录。难道对相同的事情还要声明两次吗?只需一个普通的 save操作即可。
- Restroe:当你的某个模型用到了软删除,并执行撤销操作的时候,就会用到 restore操作。
好吧,我知道你在想什么:这个概念更深一层的含义是什么呢?我们通过实例来解答。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP logging is essential for monitoring and debugging web applications, as well as capturing critical events, errors, and runtime behavior. It provides valuable insights into system performance, helps identify issues, and supports faster troubleshoot

Laravel simplifies handling temporary session data using its intuitive flash methods. This is perfect for displaying brief messages, alerts, or notifications within your application. Data persists only for the subsequent request by default: $request-

The PHP Client URL (cURL) extension is a powerful tool for developers, enabling seamless interaction with remote servers and REST APIs. By leveraging libcurl, a well-respected multi-protocol file transfer library, PHP cURL facilitates efficient execution of various network protocols, including HTTP, HTTPS, and FTP. This extension offers granular control over HTTP requests, supports multiple concurrent operations, and provides built-in security features.

Laravel provides concise HTTP response simulation syntax, simplifying HTTP interaction testing. This approach significantly reduces code redundancy while making your test simulation more intuitive. The basic implementation provides a variety of response type shortcuts: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Do you want to provide real-time, instant solutions to your customers' most pressing problems? Live chat lets you have real-time conversations with customers and resolve their problems instantly. It allows you to provide faster service to your custom

Alipay PHP...

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

The article discusses adding custom functionality to frameworks, focusing on understanding architecture, identifying extension points, and best practices for integration and debugging.
