ОБНОВЛЕНИЕ Я сообщил об ошибке в Doctrine по этому поводу http://www.doctrine -project.org / jira / browse / DC-400
У меня есть следующая Доктрина схема:
---
TestTable:
columns:
bitty: bit(1)
Я создал базу данных и таблицу для этого. Затем у меня есть следующий код PHP:
$obj1 = new TestTable();
$obj1['bitty'] = b'0';
$obj1->save();
$obj2 = new TestTable();
$obj2['bitty'] = 0;
$obj2->save();
Очевидно, моя попытка сохранить значение бита 0
в столбце bitty
.
Однако после запуска этого PHP-кода я получаю следующие странные результаты:
mysql> select * from test_table;
+----+-------+
| id | bitty |
+----+-------+
| 1 | |
| 2 | |
+----+-------+
2 rows in set (0.00 sec)
mysql> select * from test_table where bitty = 1;
+----+-------+
| id | bitty |
+----+-------+
| 1 | |
| 2 | |
+---+-------+
2 rows in set (0.00 sec)
mysql> select * from test_table where bitty = 0;
Empty set (0.00 sec)
Эти поля имеют символ 0x01
, т. Е. Для Doctrine установлено значение 1, а не 0.
Однако я могу вставить 0 в эту таблицу прямо из MySQL:
mysql> insert into test_table values (4, b'0');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test_table where bitty = 0;
+----+-------+
| id | bitty |
+----+-------+
| 4 | |
+----+-------+
1 row in set (0.00 sec)
Что происходит? Это ошибка в Доктрине?