Невозможно экранировать запятую, поскольку Doctrine просто использует PHP-функцию explode()
при Doctrine\DBAL\Types\SimpleArrayType::convertToPHPValue()
.Таким образом, любой «wanna-be-escape-персонаж», который вы вводите перед запятой, не повлияет на взрыв.
В качестве обходного пути, вы можете придумать какой-то специальный символ (ы) в качестве «внутренней замены» длязапятую и преобразовать ее обратно в геттер сущности:
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
);
}
Я предложил это как новую функцию для Doctrine: https://github.com/doctrine/dbal/issues/3300