这是我见过的最疯狂的事。
我的信条和教义都疯了
我有MySQL数据库,其中有几个不同的字段是TINYINT。
这些值不可为空,并且所有记录都将这些值设置为0或1。
所有的原则ORM映射都设置正确(我检查了一百次)。
所有getter都设置正确(也进行了双重检查)。
但是对某些物体来说它不起作用。。。有些TINYINT并没有正确地转换为布尔值(因为它与其他对象和该类型的其他字段一起工作)。。。相反,它给出空值——即使在数据库中,这个TINYINT被设置为“1”(或“0”——这无关紧要)。
对于其他一些(同一实体的)对象,它工作正常TINYINT=“1”被正确地识别为true,而“0”被正确地识别为false boolean。
我举的例子:
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;
盖特和塞特:
/**
* 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 }}
有时它会给出空值。
我发现了一些“类似”的问题提到了教义吉拉,但没有猜测是什么解决了这个问题,什么可能是原因:http://www.doctrine-project.org/jira/browse/DDC-1967
知道吗?
最佳答案
尝试使用查询生成器“手工”创建查询。
我在symfony 2.1上也遇到了同样的问题,当从会话变量中获取一个实体时,一个boolean字段将返回null,不管它有什么值。使用查询生成器使它对我起作用。
编辑
例子:
$qb = $em->createQueryBuilder();
$query = $qb->select('e.eventDeleted')
->from('BundleName:Events', 'e')
->where('e.id = :id')
->setParameter('id', $id)
->getQuery();
$eventDeleted = $query->getSingleResult();
关于php - TINYINT错误地转换为NULL,而不是 bool 值在 bool 值/symfony2中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27260300/