Browse Source

PHP 7 MSSQL Drivers does not return binary fields as hexadecimal.

ADmad 7 years ago
parent
commit
039a394565

+ 4 - 1
src/Database/Type/BinaryType.php

@@ -79,7 +79,10 @@ class BinaryType extends Type implements TypeInterface
         if ($value === null) {
             return null;
         }
-        if (is_string($value) && $driver instanceof Sqlserver) {
+        if (is_string($value)
+            && $driver instanceof Sqlserver
+            && version_compare(PHP_VERSION, '7.0', '<')
+        ) {
             $value = pack('H*', $value);
         }
         if (is_string($value)) {

+ 4 - 0
tests/TestCase/Database/Type/BinaryTypeTest.php

@@ -71,6 +71,10 @@ class BinaryTypeTest extends TestCase
      */
     public function testToPHPSqlserver()
     {
+        if (version_compare(PHP_VERSION, '7.0', '>')) {
+            $this->markTestSkipped('PHP 7 MSSQL Drivers does not return binary fields as hexadecimal.');
+        }
+
         $driver = $this->getMockBuilder('Cake\Database\Driver\Sqlserver')
             ->disableOriginalConstructor()
             ->getMock();