PHP - Doğru bit (1) türlerini işlemek için Doktrini ORM mümkün değil?

1 Cevap php

UPDATE bu http://www.doctrine-project.org/jira/browse/DC-400 hakkında Doktrini bir hata bulundular

Ben Doctrine şema şu var:

---
TestTable:
    columns:
        bitty: bit(1)

Bunun için veritabanı ve tablo oluşturduk. Daha sonra aşağıdaki PHP kodu vardır:

$obj1 = new TestTable();
$obj1['bitty'] = b'0';
$obj1->save();

$obj2 = new TestTable();
$obj2['bitty'] = 0;
$obj2->save();

Açıkçası benim girişimi bitty sütununda bit değeri 0 kurtarmaktır.

Ancak bu PHP kodu çalıştırdıktan sonra ben şu garip sonuçlar alabilirsiniz:

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)

Bu kutular yani Doktrini 1 değerini belirledi 0x01 karakter, 0 değil bulunmaktadır.

Ancak ben MySQL doğrudan bu tabloya 0'lar ekleyebilirsiniz:

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)

Ne oluyor? Bu Doktrini bir hata mı?

1 Cevap

Bit yasal bir türü olduğunu söylüyor doktrin belgelerinde hiçbir şey yoktur.