laravel-ready/model-support

有用的模型支持特性

v2.0.0 2024-05-27 13:57 UTC

This package is auto-updated.

Last update: 2024-08-27 14:39:24 UTC


README

ModelSupport

Stable Version Unstable Version Total Downloads License

📂 关于

有用的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()方法。

注意 字段名默认为slugtitle。您可以在配置文件中更改它。

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);

⚓致谢