Для настройки поля bool сущности Doctrine, когда в базе оно хранится как string, можно использовать Doctrine DBAL тип VARCHAR или ENUM.
Сначала нужно определить свойство сущности, которое будет представлять поле bool. Для этого можно использовать аннотацию @Column и указать тип данных "boolean" или "bool".
use DoctrineORMMapping as ORM; /** * @ORMEntity */ class YourEntity { /** * @ORMId * @ORMGeneratedValue * @ORMColumn(type="integer") */ private $id; /** * @ORMColumn(type="boolean") */ private $yourBoolField; // ... }
Затем необходимо настроить дополнительные параметры для маппинга поля в базу данных. Для преобразования строки в булево значение можно использовать Doctrine DBAL тип VARCHAR с параметром length="1", что позволит хранить в этом поле только один символ.
use DoctrineORMMapping as ORM; use DoctrineDBALTypesStringType; /** * @ORMEntity */ class YourEntity { // ... /** * @ORMColumn(type="string", length=1) */ private $yourBoolField; // ... /** * @ORMPostLoad */ public function loadBoolean() { $this->yourBoolField = ($this->yourBoolField === '1'); } /** * @ORMPrePersist * @ORMPreUpdate */ public function storeBoolean() { $this->yourBoolField = $this->yourBoolField ? '1' : '0'; } }
Типичный подход к решению этой проблемы - создание методов для преобразования значения из строки в булево, используя события жизненного цикла сущности @ORMPostLoad, @ORMPrePersist и @ORMPreUpdate.
Теперь, при загрузке сущности из базы данных, значение строки будет автоматически преобразовано в булево значение. При сохранении в базу данных булево значение будет преобразовано обратно в строку, чтобы сохранить его в базе данных.
При этом не забудьте импортировать нужные классы в начало файла (например, DoctrineDBALTypesStringType для типа VARCHAR).
Таким образом, настройка поля bool сущности Doctrine, когда в базе оно хранится как string, достигается за счет дополнительной настройки аннотации @Column и определения дополнительных методов жизненного цикла для соответствующих преобразований.