中小企/laravel-model-life-events

dev-master 2024-04-08 06:50 UTC

This package is auto-updated.

Last update: 2024-09-08 07:42:42 UTC


README

此库允许您扩展Laravel框架中模型生命周期方法的工作

安装

composer require sme/laravel-model-life-events

例如

class Posts extends Model
{
	public static function booted() {

		self::deleted(function (self $model) {

			//  listening to the deletion event in the current model
			...

		});

	}

对于此代码,监听器将不会工作,因为调用删除事件的函数在Builder类中缺失

public static function deletePost(int $post_id) {
	return self::where('id', $post_id)->delete();
}

您可以使用find($post_id)方法,然后一切都会正常工作,但这并不总是方便

public static function deletePost(int $post_id) {
	$post = self::find($post_id);
	if ($post) {
		return $post->delete();
	}
}

要使用不先进行额外的find、update等方法的delete或update方法。您可以在模型类中使用"HasEvents"特质

use SME\Laravel\Model\HasEvents;

class Posts extends Model
{
	use HasEvents;
	
	...

在这种情况下,"deleting"或"updating"等监听器总是被调用,而"deleted"或"updated"只有在请求成功时才会被调用