riesenia / persist-related-data
CakePHP ORM 插件,用于持久化相关表选定的字段
v1.1.0
2018-07-12 07:09 UTC
Requires
- cakephp/orm: ^3.5
Requires (Dev)
- cakephp/cakephp: ^3.5
- phpunit/phpunit: ^5.7.14|^6.0
README
此插件适用于 CakePHP 3.x,包含处理保存相关数据选定字段的行为(冗余)。
安装
更新 composer.json 文件以包含此插件
{ "require": { "riesenia/persist-related-data": "~1.0" } }
在 config/bootstrap.php 中加载插件
Plugin::load('PersistRelatedData');
使用方法
使用此行为的良好示例是 Invoices 模型,它与 Contacts 相关。您可以在创建新发票时提供一个联系人选择框,并仅保存 contact_id。但是,当稍后修改联系人数据时,您的发票应保持不变。
以下示例假设 invoices 表具有 contact_id、contact_name 和 contact_address 字段,而 contacts 表具有 name 和 address 字段。当您保存带有提供的 contact_id 的 Invoice 实体时,contact_name 和 contact_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' ]); } }