DC2Type:在执行Doctrine迁移差异时添加到字段的数组注释

时间:2015-11-02 13:37:12

标签: mysql database symfony doctrine-orm migration

当我运行var converted = model.ToDictionary(kv => kv.Key, kv => SomeType.FromDynamic(kv.Value)); 时,我有一个与我没有更改过的表和实体相关的未执行迁移。

这是生成的SQL:

doctrine:migrations:diff

这是第一次映射实体和创建表时生成的原始SQL:

ALTER TABLE crmpicco_course_guide_row CHANGE courses courses LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:array)\'

我的学说映射:

courses LONGTEXT DEFAULT NULL

我的实体:

    courses:
        type: array
        nullable: true

为什么要添加评论,是否有办法阻止在/** * @var array */ protected $courses = array(); /** * {@inheritdoc} */ public function getCourses() { return $this->courses; } /** * @param array $courses */ public function setCourses(array $courses) { $this->courses = $courses; } 期间出现该评论?

1 个答案:

答案 0 :(得分:4)

评论已添加because of this method

<?php

namespace My\DBAL\Types;

/**
 * Overwrite array type to prevent comment hint
 */
class ArrayType extends \Doctrine\DBAL\Types\ArrayType 
{
    /**
     * {@inheritdoc}
     */
    public function requiresSQLCommentHint(AbstractPlatform $platform)
    {
        return false;
    }
}

您可以覆盖现有的类并使用返回false的自定义类:

'doctrine' => array(
    // ...other config

    'configuration' => array(
        'orm_default' => array(
            'types' => array(
                'array' => 'My\DBAL\Types\ArrayType'
            )
        )
    )
)

按如下方式注册您的自定义类型:

SELECT p.*
     , d.*
  FROM wp_posts p
  LEFT 
  JOIN wp_esp_datetime d 
    ON d.evt_id = p.id
  LEFT 
  JOIN wp_term_relationships r
    ON r.object_id = p.id 
   AND r.term_taxonomy_id = 3
 WHERE term_taxonomy_id IS NULL;