swisscom / referencedataimport
基于Swisscom.AliceConnector的参考数据导入器
0.4.0
2023-05-12 11:36 UTC
Requires
- neos/flow: ^4.0 || ^5.0 || ^6.0 || ^7.0
- swisscom/aliceconnector: *
README
Neos Flow包,用于根据Swisscom.AliceConnector将参考数据导入您的项目。
这允许在YAML、JSON或PHP文件中定义参考数据。YAML示例
Your\Package\Domain\Model\Vat: vat_normal: name: 'Normal' rate: '7.7' vat_special: name: 'Special' rate: '3.7' vat_reduced: name: 'Reduced' rate: '3.5'
有关更多文档,请参阅Swisscom.AliceConnector或Alice中的README。
入门
通过composer安装此包。
composer require swisscom/referencedataimport
配置
在Settings.yaml
中设置您的参考数据文件路径。路径作为具有referenceData
键的fixture集指定,该键是Swisscom.AliceConnector
包的一部分。
Swisscom: AliceConnector: fixtureSets: referenceData: '%FLOW_PATH_PACKAGES%Application/Your.Package/Resources/Private/ReferenceData/{name}.yaml''
注解
使用Swisscom\ReferenceDataImport\Annotation\Entity
注解应导入的数据模型类。如果属性应在后续执行中更新,则使用Updatable
注解它。
<?php namespace Your\Package\Domain\Model; use Neos\Flow\Annotations as Flow; use Swisscom\ReferenceDataImport\Annotation as ReferenceData; /** * @Flow\Entity * @ReferenceData\Entity */ class Vat { /** * @var string */ protected $name; /** * @var float * @ReferenceData\Updatable */ protected $rate; }
仓库
支持参考数据导入的每个实体仓库都应该实现\Swisscom\ReferenceDataImport\ReferenceDataRepositoryInterface
。它定义了findByReferenceDataEntity
方法,该方法用于确定对象是否已存在。
对于Your\Package\Domain\Repository\VatRepository
的示例
public function findByReferenceDataEntity(object $object): ?Vat { $query = $this->createQuery(); return $query->matching($query->equals('name', $object->getName()))->execute()->getFirst(); }
用法
通过CLI导入数据
./flow referencedata:import
限制
使用Updatable
注解的对象关系(OneToMany、ManyToMany、ManyToOne)将指向新导入的对象,即使源对象已存在。需要单独处理这些关系。提供的信号可能是切入点。