Escape-запятая (= разделитель) в типе Doctrine `simple_array` - PullRequest
0 голосов
/ 25 сентября 2018

Есть ли способ как-то ввести (например, escape) литерал , (запятая) в одном из значений массива Тип данных simple_array Doctrine * ?То, что я хочу получить, это два значения массива, например:

  • foo, bar
  • вторая запись

1 Ответ

0 голосов
/ 25 сентября 2018

Невозможно экранировать запятую, поскольку 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

...