msaddamkamal/model-dependency-sync

一个用于同步模型依赖并提供更新洞察的Laravel包。

0.1.2 2024-03-15 19:38 UTC

This package is auto-updated.

Last update: 2024-09-15 20:47:16 UTC


README

一个用于同步模型依赖并提供更新洞察的Laravel包,使您能够更容易地在Laravel应用程序中管理复杂的数据关系。

特性

  • 自动同步更新时的相关模型数据。
  • 提供有关模型更新如何影响相关数据的洞察。
  • 通过发布的模板文件实现易于配置和定制。

要求

  • PHP版本7.4或更高。
  • Laravel 8.0或更高。

安装

您可以通过Composer安装此包

composer require msaddamkamal/model-dependency-sync

此包使用Laravel的自动发现功能,因此服务提供者和外观将自动注册。

定制模型行为

此包允许您定义模型更新如何影响应用程序其他部分的定制行为。要定制此行为

发布定制模板

运行以下命令将模板PHP文件发布到您的应用程序的app/目录

 php artisan vendor:publish --tag=model-dependency-sync

定制模型依赖

发布后,您将在app/目录中找到一个名为model_dependencies.php的新文件。在这里,您可以定义您的模型是如何关联的,以及更新时应采取哪些操作。

return [
    // Example Model Class
    \App\Models\ExampleModel::class => [
        'listen' => ['field_to_listen_for_changes'],
        'affect' => [
            // Related Model Class
            \App\Models\RelatedModel::class => [
                'relation' => 'relationMethodOnExampleModel',
                'actions.field_to_listen_for_changes' => [
                    'update' => [
                        'related_model_field' => function ($exampleModelInstance, $relatedModelInstance) {
                            // Logic to handle the update
                            return $newFieldValue;
                        },
                    ],
                ],
            ],
        ],
    ],
];

此文件允许您指定要“监听”更改的模型属性,并定义这些更改如何“影响”其他模型,包括使用闭包或其他PHP逻辑指定自定义操作。

使用自定义处理程序扩展功能

如果默认处理机制不完全满足您的需求,您可以通过在配置文件中指定自定义处理程序类来扩展包的功能。您的自定义处理程序类应扩展包的基处理程序类(MSaddamKamal\ModelDependencySync\BaseModelDependencyHandler)并重写必要的方法以实现您的自定义逻辑。

要使用您的自定义处理程序,在config/model_dependencies.php文件中定义它,如下所示

return [
    'handler' => \App\Handlers\MyCustomModelDependencyHandler::class,
    // Other configuration...
];

发布配置

要将包配置文件发布到您的应用程序的配置目录,请运行

php artisan vendor:publish --tag=model-dependency-sync-config

以下是一个自定义处理程序可能的样子

namespace App\Handlers;

use MSaddamKamal\ModelDependencySync\BaseModelDependencyHandler;

class MyCustomModelDependencyHandler extends BaseModelDependencyHandler
{
    public function handleModelUpdated($model)
    {
        // Your custom logic here
    }
}

通过扩展并定义一个自定义处理程序,您可以完全控制模型更新的处理方式,并可以根据您应用程序的具体需求定制行为。

许可

Laravel的模型依赖同步是开源软件,许可协议为MIT。