У меня проблемы со вставкой или обновлением логического поля Doctrine. Запрос sql строится с числом вместо логического значения. Вот пример:
$qb = $this->getEntityManager()->createQueryBuilder()
->update('MyBundle:Message', 'message')
->set('message.read', 'true');
результат :
ОБНОВЛЕНИЕ project.message SET read= 1 WHERE ID =?' с параметрами ["225"]
ОШИБКА: столбец «чтение» имеет логический тип, но выражение имеет целочисленный тип.
ты
Примечание. Класс сообщения.
/**
* @var boolean
*
* @ORM\Column(name = "READ", type = "boolean", nullable=false)
*/
private $read = false;
Примечание 2: чтобы запустить его, я могу написать:
$qb = $this->getEntityManager()->createQueryBuilder() ->update('MyBundle:Message', 'сообщение') ->set('message.read', 'истина');
(как струна)
Есть ли более приятный способ, позволяющий мне использовать логическое значение на стороне PHP?





Решение найдено. Никогда не используйте логическое значение напрямую, а через setParameter.
$qb = $this->getEntityManager()->createQueryBuilder()
->update('MyBundle:Message', 'message')
->set('message.read', ':read')
->setParameter('read', true);