Doctrine的`simple_array`类型的转义逗号(=定界符)

时间:2018-09-25 16:34:10

标签: php symfony doctrine-orm doctrine symfony4

是否可以通过某种方式在Doctrine's simple_array data type的数组值之一中输入(例如,转义)文字,(逗号)?我想要得到的是两个像这样的数组值:

  • foo,bar
  • 第二次进入

1 个答案:

答案 0 :(得分:1)

由于Doctrine仅在explode()使用PHP的Doctrine\DBAL\Types\SimpleArrayType::convertToPHPValue()函数,因此无法转义。因此,您在逗号前输入的任何“想要逃脱字符”都不会影响爆炸。

作为一种解决方法,您可以提出一些特殊字符作为逗号的“内部替代”,然后将其转换回实体的getter中:

const COMMA_REPLACEMENT = '||'; // be sure to choose something that you'll *never* need in one of the strings

public function getName()
{
    return array_map(function($value)
        {
            return str_replace(self::COMMA_REPLACEMENT, ',', $value);
        },
        $this->name
    );
}

我建议将此作为“教义”的新功能:https://github.com/doctrine/dbal/issues/3300