oplatform-club/platform-serialised-fields

Oro 平台序列化字段

2.5.1 2017-12-31 10:05 UTC

README

本文档简要介绍了“Oro 实体序列化字段”包,以及如何下载和安装的信息。

目录

基础

ORO 平台提供了创建自定义实体或通过新自定义字段扩展实体的能力。

此包允许在创建自定义字段时避免模式更新。尽管这个字段有一些限制。

此类字段数据以序列化数组的形式存储在 serialized_data 列中。在实体配置页面中,serialized_data 字段从 UI 中隐藏。

不支持的功能

  • 网格过滤和排序
  • 段和报告
  • 图表
  • 搜索
  • 关系、枚举和选项集字段类型
  • 数据审计
  • 在 Doctrine 查询构建器中使用此类字段

安装完成后(以下将描述),在“新建字段”页面中会新增一个名为“存储类型”的新字段,您可以选择两种存储类型

  • 表列选项将允许您像往常一样创建自定义字段;
  • 序列化字段选项意味着您可以避免模式更新并立即开始使用此字段,但请注意,在这种情况下,字段类型受到限制,仅限于
    • 字符串
    • 整数
    • 小整数
    • 大整数
    • 布尔值
    • 十进制
    • 日期
    • 日期时间
    • 文本
    • 浮点数
    • 货币
    • 百分比

要使用迁移创建序列化字段,可以使用SerializedFieldsExtension。以下是一个示例

<?php

namespace Acme\Bundle\AppBundle\Migrations\Schema\v1_1;

use Doctrine\DBAL\Schema\Schema;

use Oro\Bundle\EntityExtendBundle\EntityConfig\ExtendScope;
use Oro\Bundle\EntitySerializedFieldsBundle\Migration\Extension\SerializedFieldsExtension;
use Oro\Bundle\EntitySerializedFieldsBundle\Migration\Extension\SerializedFieldsExtensionAwareInterface;
use Oro\Bundle\MigrationBundle\Migration\Migration;
use Oro\Bundle\MigrationBundle\Migration\QueryBag;

class AddSerializedFieldMigration implements
    Migration,
    SerializedFieldsExtensionAwareInterface
{
    /** @var SerializedFieldsExtension */
    protected $serializedFieldsExtension;

    /**
     * {@inheritdoc}
     */
    public function setSerializedFieldsExtension(SerializedFieldsExtension $serializedFieldsExtension)
    {
        $this->serializedFieldsExtension = $serializedFieldsExtension;
    }

    /**
     * {@inheritdoc}
     */
    public function up(Schema $schema, QueryBag $queries)
    {
        $this->serializedFieldsExtension->addSerializedField(
            $schema->getTable('my_table'),
            'my_serialized_field',
            'string',
            [
                'extend'    => [
                    'owner' => ExtendScope::OWNER_CUSTOM,
                ]
            ]
        );
    }
}

要求

OroEntitySerializedFieldsBundle 需要 OROPlatform(BAP) 和 PHP 7.0 或更高版本。

安装

该包可通过 Oro 包管理器获得。出于开发目的,可以直接从 GitHub 仓库克隆。

git clone git@github.com:orocrm/OroEntitySerializedFieldsBundle.git
git submodule init
git submodule update

更新您的 composer.json 文件:

   "autoload": {
        "psr-0": {
...
            "Oro\\Bundle": ["src/Oro/src", "src/OroPackages/src"],
...            
        }
    },
php composer.phar update
php app/console oro:platform:update --force

运行单元测试

为此包运行单元测试:

phpunit -c PACKAGE_ROOT/phpunit.xml.dist