这是我见过的最疯狂的事。
我的信条和教义都疯了
我有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/

10-13 02:37