jrmadsen67 / laravel-cascade-updates
Laravel的级联模型更新。
1.0
2018-12-28 04:12 UTC
This package is auto-updated.
Last update: 2024-08-28 23:17:37 UTC
README
v1.0.0
这基本上是对Michael Dyrynda的https://github.com/michaeldyrynda/laravel-cascade-soft-deletes的分支。我有一段时间就有这个想法,计划了一下如何实现后,搜索了类似的东西。Michael的库已经建立得很好,并且与我的想法非常相似,所以为了在假期快速完成并保持已知格式,我只是在他的工作上进行了修改。
这个特性允许你在顶级记录更改时更新层次结构中的所有底层实体。例如,如果我有一个有多个帖子(Posts)的作者(Authors),每个帖子有多个评论(Comments),我可以将作者(Author)的is_active
标志设置为false,这样他们的所有帖子和相关评论都将同时停用。
代码示例
<?php namespace App; use App\Comment; use jrmadsen67\Database\Support\CascadeUpdates; use Illuminate\Database\Eloquent\Model; class Post extends Model { use CascadeUpdates; protected $cascadeUpdates = ['comments' => ['is_active']]; public function comments() { return $this->hasMany(Comment::class); } }
现在你可以更新一个App\Post
记录,并且任何相关的App\Comment
记录也会被更新。如果App\Comment
记录实现了CascadeUpdates
特性,那么它的子记录也会被更新,依此类推。
重要提示:这只会更新所有实体上的相同字段。换句话说,不能告诉它在is_active
更改时更新myField
。
$post = App\Post::find($postId) $post->update(['is_active' => 0]); // Updates the post, which will also trigger the update() method on any comments and their children.
安装
此特性通过Composer安装。要安装,只需将其添加到您的composer.json
文件中。
$ composer require jrmadsen67/laravel-cascade-updates
支持
如果您对这个包有一般性的问题,请随时在Twitter上联系我。
如果您认为您已经发现了一个问题,请使用GitHub问题跟踪器报告它,或者更好的是,分支存储库并提交一个拉取请求。
如果您在使用这个包,我很乐意听听您的想法。谢谢!