swisscom/referencedataimport

基于Swisscom.AliceConnector的参考数据导入器

0.4.0 2023-05-12 11:36 UTC

This package is auto-updated.

Last update: 2024-08-30 08:40:52 UTC


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.AliceConnectorAlice中的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)将指向新导入的对象,即使源对象已存在。需要单独处理这些关系。提供的信号可能是切入点。