riesenia/persist-related-data

CakePHP ORM 插件,用于持久化相关表选定的字段

安装次数: 32,579

依赖项: 0

建议者: 0

安全性: 0

星标: 11

关注者: 5

分支: 5

开放问题: 0

类型:cakephp-plugin

v1.1.0 2018-07-12 07:09 UTC

This package is auto-updated.

Last update: 2024-09-09 13:29:31 UTC


README

Build Status Latest Version Total Downloads Software License

此插件适用于 CakePHP 3.x,包含处理保存相关数据选定字段的行为(冗余)。

安装

更新 composer.json 文件以包含此插件

{
    "require": {
        "riesenia/persist-related-data": "~1.0"
    }
}

config/bootstrap.php 中加载插件

Plugin::load('PersistRelatedData');

使用方法

使用此行为的良好示例是 Invoices 模型,它与 Contacts 相关。您可以在创建新发票时提供一个联系人选择框,并仅保存 contact_id。但是,当稍后修改联系人数据时,您的发票应保持不变。

以下示例假设 invoices 表具有 contact_idcontact_namecontact_address 字段,而 contacts 表具有 nameaddress 字段。当您保存带有提供的 contact_id 的 Invoice 实体时,contact_namecontact_address 字段将自动填充。

class InvoicesTable extends Table
{
    public function initialize(array $config)
    {
        parent::initialize($config);

        // add PersistRelatedData behavior
        $this->addBehavior('PersistRelatedData.PersistRelatedData', [
            'fields' => [
                'contact_name' => 'Contacts.name',
                'contact_address' => 'Contacts.address'
            ]
        ]);

        // associations
        $this->belongsTo('Contacts', [
            'foreignKey' => 'contact_id',
            'className' => 'Contacts'
        ]);
    }
}