这是我见过的最疯狂的事情。 我的Symfony2和Doctrine已经疯了
我有几乎没有TINYINT字段的MySQL数据库。 那些不可为空,所有记录都将这些值设置为0或1.
所有学说ORM映射都正确设置(我将其复试了数百次)。 所有getter都设置正确(双重检查)。
然后 - 对于某些对象,它不起作用......某些TINYINT未正确转换为BOOLEAN(因为它适用于其他对象和其他字段那个enity)...相反它给出了NULL - 即使在数据库中这个TINYINT被设置为“1”(或“0” - 它也无关紧要)。
对于某些其他对象(同一实体),它可以正常工作TINYINT =“1”被正确识别为真,“0”被认为是假布尔值。
那些我的例子:
Events.orm.xml:
<entity name="Events" table="events">
<change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
<field name="eventDeleted" type="boolean" column="_event_deleted"/>
实体:“Events.php”
映射:
/**
* @var boolean $eventDeleted
*
* @ORM\Column(name="_event_deleted", type="boolean", nullable=false)
*/
private $eventDeleted;
和getter and setter:
/**
* Set eventDeleted
*
* @param boolean $eventDeleted
*/
public function setEventDeleted($eventDeleted)
{
$this->eventDeleted = $eventDeleted;
}
/**
* Get eventDeleted
*
* @return boolean
*/
public function getEventDeleted()
{
return $this->eventDeleted;
}
数据库是:
正如我所说 - 对于某些对象,它可以正常工作,并在例如访问时给出“1”或“0”:
{{ event[0].getEventDeleted }}
有时会给出NULL。
我发现了一些在教义jira中提到的“类似”问题,但没有猜测是什么解决了这个问题,原因可能是:http://www.doctrine-project.org/jira/browse/DDC-1967
有什么想法吗?
答案 0 :(得分:1)
尝试使用查询构建器“手动”创建查询 在从会话变量中获取实体时,我在symfony 2.1上也遇到了同样的问题,无论它具有什么值,布尔字段都返回null。使用查询构建器使它对我有用。
修改强>
示例:
$qb = $em->createQueryBuilder();
$query = $qb->select('e.eventDeleted')
->from('BundleName:Events', 'e')
->where('e.id = :id')
->setParameter('id', $id)
->getQuery();
$eventDeleted = $query->getSingleResult();