ggmm-one / model-helpers-for-laravel
该包已被弃用且不再维护。未建议替代包。
一套用于构建Laravel应用程序的辅助工具,让开发更快
v1.6.0
2020-12-24 05:52 UTC
Requires
- illuminate/database: 6.*|7.*|8.*
README
一套用于构建Laravel应用程序的辅助工具,让开发更快
- CascadeSoftDeletes - 对SoftDelete模型在删除时模拟SQL级联删除
- HasModelDisplayName - 被其他辅助工具使用以确定显示名称
- HasOrder - 通过变量hasOrder创建默认排序范围
CascadeSoftDeletes
如果你有一个类似以下类
class User extends Model { use SoftDeletes; public function posts() { return $this->hasMany('App\Posts'); } }
你可以修改为
use Ggmm\Model\CascadeSoftDeletes; class User extends Model { use CascadeSoftDeletes; protected $cascadeDelete = ['posts']; public function posts() { return $this->hasMany('App\Posts'); } }
现在每次你软删除一个用户时,所有相关的帖子也会被删除。
一些注意事项
- 在删除调用中包装事务是个好主意;
- 所有要级联删除的模型都必须使用SoftDelete或CascadeSoftDelete;
- 如果你使用forceDelete,则不会发生级联。为此请使用标准数据库功能;
- 它不支持级联恢复。但由于所有模型都使用相同的deleted_at时间保存,你可以根据deleted_at值查询数据库并恢复这些项目。(将在下一个版本中完成)
HasModelDisplayName
添加了getModelDisplayName()函数。
默认名称是类名。例如:类"ArticlePost";显示名称"Article Post"。
你可以通过使用名为modelDisplayName的变量来覆盖名称。
class ArticlePost { protected $modelDisplayName = 'Magazine Post'; }
HasOrder
创建一个基于你设置的hasOrder变量的排序范围。
use Ggmm\Model\HasOrder; class Post extends Model { use HasOrder; protected $hasOrder = ['created_at' => 'desc', 'title']; } //You can then do things like Post::ordered()->get();