laravel-ready / model-support
有用的模型支持特性
v2.0.0
2024-05-27 13:57 UTC
Requires
- php: ^8.2 || ^8.1
- illuminate/support: ^11.8 || ^10.0
Requires (Dev)
- mockery/mockery: ^1.6.12
- nunomaduro/larastan: ^v2.9.6
- orchestra/testbench: v9.1.0
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.11.2
- phpstan/phpstan-deprecation-rules: ^1.2.0
- phpstan/phpstan-phpunit: ^1.4.0
README
📂 关于
有用的eloquent模型支持特性。
📦 安装
通过composer获取
composer require laravel-ready/model-support
⚙️ 配置
php artisan vendor:publish --tag=model-support-config
示例特性使用
use LaravelReady\ModelSupport\Traits\Sluggable; use LaravelReady\ModelSupport\Traits\HasActive; ... class Post extends Model { use Sluggable, HasActive; protected $fillable = [ 'title', 'slug', 'content', 'is_active' ]; ... }
📝 使用方法
HasLanguage
此特性允许您按语言获取模型。
注意 字段名默认为
lang
。您可以在配置文件中更改它。
use LaravelReady\ModelSupport\Traits\HasLanguage; ... $model->lang('en'); // will return $query->where('lang', $lang); $model->langNot('en'); // will return $query->where('lang', '!=', $lang); $model->langIn(['en', 'tr']); // will return $query->whereIn('lang', $langs); $model->langNotIn(['en', 'tr']); // will return $query->whereNotIn('lang', $langs);
Sluggable
此特性允许您从字符串生成slug。当您创建新的模型时,slug将自动生成。如果您更改标题,slug也将更新。有关详细信息,请参阅bootSluggable()方法。
注意 字段名默认为
slug
和title
。您可以在配置文件中更改它。
use LaravelReady\ModelSupport\Traits\Sluggable; ... $model->slug('any-string'); // will return $query->where('slug', $slug); $model->slugLike('any-string'); // will return $query->where('slug', 'like', $slug); $model->slugNot('any-string'); // will return $query->where('slug', '!=', $slug); $model->slugNotLike('any-string'); // will return $query->where('slug', 'not like', $slug); $model->slugIn(['any-string', 'any-string']); // will return $query->whereIn('slug', $slug); $model->slugNotIn(['any-string', 'any-string']); // will return $query->whereNotIn('slug', $slug);
SluggableTitle
此特性允许您从标题字段生成slug。与Sluggable特性相同,但仅适用于标题字段。
use LaravelReady\ModelSupport\Traits\SluggableTitle; ...
SluggableName
此特性允许您从名称字段生成slug。与Sluggable特性相同,但仅适用于名称字段。
use LaravelReady\ModelSupport\Traits\SluggableName; ...
ParentChild
此特性允许您获取模型的所有子项。
注意 字段名默认为
parent_id
。您可以在配置文件中更改它。
警告 它仅支持自引用模型。
use LaravelReady\ModelSupport\Traits\ParentChild; ... $model->parent(); // will return parent model $model->children(); // will return children models $model->allChildren(); // will return all children models $model->allChildrenIds(); // will return all children ids $model->recursiveParentAndChildren(); // will return all parent and children models
HasActive
此特性允许您获取活动/非活动状态的模型。
注意 字段名默认为
is_active
。您可以在配置文件中更改它。
警告 此特性强制您的模型填充
is_active
字段,并将is_active
转换为布尔值。
use LaravelReady\ModelSupport\Traits\HasActive; ... $model->status(true|false); // will return $query->where('is_active', $status); $model->active(); // will return $query->where('is_active', true); $model->inactive(); // will return $query->where('is_active', false);
⚓致谢
- 此项目由packager生成。