布爾這是我見過的最瘋狂的事情。 我的Symfony2和Doctrine已經瘋了TINYINT錯誤地轉換成空,而不是教義/ Symfony2的
我有MySQL數據庫與幾個不同的字段是TINYINT。 那些不是空的,所有的記錄都將這些值設置爲0或1.
所有的原理ORM映射ale設置正確(我將它重複檢查了一百次)。 所有干將設置是否正確(doublechecked爲好)。
但後來 - 爲一些對象不起作用......一些TINYINT的不正確翻譯爲布爾值,因爲它應該(和它的工作原理與其他物體並與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和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
任何想法?
你某處簽到(Symfony2的探查,手動轉儲)什麼數據進入實際查詢?如果你的堆棧發瘋了,你最好跟着兔子走,或許你甚至在Doctrine2中發現了一個bug? – 2014-12-02 22:37:39
我檢查了轉儲。一切正常,正如我們從描述中所期望的那樣 - 在那些我提到的「null」被傳遞的情況下。但爲什麼? – konieckropka 2014-12-04 12:22:02