hiimnotwordy
@hiimnotwordy
full-stack

Не понятно как работать с emoji в symfony?

Если я указываю тип поля type="string" в Entity, а в базе вручную устанавливаю тип поля varbinary, то emoji сохраняются и всё работает.
/**
     * @ORM\Column(type="string", length=120, nullable=true)
     */
    private $freeName;

    /**
     * @return string
     */
    public function getFreeName(): ?string
    {
        return $this->freeName;
    }

    /**
     * @param string $freeName
     */
    public function setFreeName($freeName): self
    {
        $this->freeName = $freeName;

        return $this;
    }


Но после такого вмешательства невозможно делать апдейт базы
php bin/console doctrine:schema:update --force

Если я изначально выставляю тип поля binary
* @ORM\Column(type="binary", length=120, nullable=true)

то получаю не строку, а ресурс. Как правильно поступить с полем, с геттерами и сеттерами, чтобы сохранить эмоджи в базу по-грамотному?
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
@bkosun
Используйте кодировку utf8mb4, дополнительно нужно указать параметры для сущности / таблицы и соединения.

Примерно так:
/**
 * @ORM\Entity
 * @ORM\Table(options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"})
 */


# app/config/config.yml
doctrine:
    dbal:
        charset:  utf8mb4


https://github.com/symfony/symfony-docs/issues/5526
jameshalsall.co.uk/posts/4-byte-utf-8-characters-w...
https://avris.it/blog/emojis-in-doctrine
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы