msaddamkamal / model-dependency-sync
一个用于同步模型依赖并提供更新洞察的Laravel包。
0.1.2
2024-03-15 19:38 UTC
Requires
- php: ^7.4|^8.0|^8.1
- illuminate/support: ^8.0|^9.0|^10.0
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。