edulazaro/larakeep

此包最新版本(1.0.5)没有可用的许可信息。

Laravel模型字段维护任务

1.0.5 2023-10-07 15:43 UTC

This package is auto-updated.

Last update: 2024-09-07 17:52:00 UTC


README

Total Downloads Latest Stable Version

简介

Larakeep 是一个允许创建和处理的 Keepers 的包。Keepers 允许维护所需模型字段的值。

有时,在创建或更新模型实例时必须配置字段值。做这件事的常见地方是观察者。这可能导致观察者中重复代码过多或模型中函数过多,从而导致文件变大。

keepers 允许在独立的类中设置所需字段的值,使代码更简洁。

如何安装 Larakeep

在 Laravel 根项目文件夹中执行此命令

composer require edulazaro/larakeep

如何创建 Keeper

您可以手动创建 Keeper 或使用 make 命令

php artisan make:keeper MyModelKeeper

默认情况下,Keeper 将为模型 \App\Models\MyModel 创建。

您也可以通过使用第二个参数指定为创建 Keeper 的模型

php artisan make:keeper MyClassKeeper  \App\Models\Whatever\MyModel

在这种情况下,keeper 将为模型 \App\Models\Whatever\MyModel 创建。

如何配置 Keeper

创建 Keeper 后,您需要将 HasKeepers 关注点添加到引用模型

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use EduLazaro\Larakeep\Concerns\HasKeepers;

class MyModel extends Model
{
    use HasKeepers;
}

然后,您需要在任何服务提供者的 boot 方法中将 keeper 分配给模型

namespace App\Providers;

use App\Models\MyModel;
use App\Keepers\MyModelKeeper;

class AppServiceProvider extends Model
{
    // ...
    public function boot()
    {
        // ...
        MyModel::keep(MyModelKeeper::class);
    }
}

您可以为单个模型添加多个 Keepers

MyModel::keep(MyModelKeeperA::class);
MyModel::keep(MyModelKeeperB::class);

如何使用 Keeper

要使用 Keeper,您需要使用单词 get + 保留模型的 camel case 版本以维护。例如,通常将模型名称和模型的搜索字符串分开。在这种情况下,keeper 方法很方便来设置属性值

namespace App\Keepers;

use \App\Models\MyClass;

class MyClassKeeper
{
    // ...
    public function getSearchText()
    {
        return $this->myClass->name . ' ' . $this->myClass->tag;
    }
}

此方法也可以接受参数,通过在方法名称中添加关键字 With

namespace App\Keepers;

use \App\Models\MyClass;

class MyClassKeeper
{
    // ...
    public function getSearchTextWith($whatever)
    {
        return $this->myClass->name . ' ' . $this->myClass->tag;
    }
}

现在,在观察者中,您可以维护 search_text 字段并设置其值

$myClassInstance->maintain('search_text'); // To execute the getSearchText method.

如果方法有参数

$myClassInstance->maintainWith('search_text', 'Any string'); // To execute the getSearchTextWith method.

您还可以传递一个字段数组以同时维护所有字段

$myClassInstance->maintain(['search_text', 'word_count']);

模型仍需要被保存。

如何添加任务

您可以在 keeper 方法的前面添加任何不是 get 的单词,比如 configure

namespace App\Keepers;

use \App\Models\MyClass;

class MyClassKeeper
{
    // ...
    public function configureSearchText()
    {
        return $this->myClass->name . ' ' . $this->myClass->tag;
    }
}

同样,这些方法也可以接受参数

namespace App\Keepers;

use \App\Models\MyClass;

class MyClassKeeper
{
    // ...
    public function configureSearchTextWith($whatever)
    {
        return $this->myClass->name . ' ' . $this->myClass->tag;
    }
}

但是,要使用这些方法维护这些字段,您需要使用 maintainTask 方法,并使用您添加的名称

$myClassInstance->maintainTask('configure','search_text');

如果方法有参数

$myClassInstance->maintainTaskWith('configure', 'search_text', 'Any string');

您还可以传递一个字段数组以同时维护所有字段

$myClassInstance->maintainTask('configure', ['search_text', 'word_count']);

模型仍需要被保存。

许可

Larakeep 是在 MIT 许可下许可的开源软件,许可文件位于 MIT 许可