[Doctrine][Form] support large integers

This commit is contained in:
Christian Flothmann 2016-11-12 12:41:58 +01:00
parent 4967ad4b90
commit 6954a07191
2 changed files with 3 additions and 3 deletions

View File

@ -104,7 +104,7 @@ class ORMQueryBuilderLoader implements EntityLoaderInterface
// Filter out non-integer values (e.g. ""). If we don't, some
// databases such as PostgreSQL fail.
$values = array_values(array_filter($values, function ($v) {
return (string) $v === (string) (int) $v;
return (string) $v === (string) (int) $v || ctype_digit($v);
}));
} elseif ('guid' === $metadata->getTypeOfField($identifier)) {
$parameterType = Connection::PARAM_STR_ARRAY;

View File

@ -87,7 +87,7 @@ class ORMQueryBuilderLoaderTest extends \PHPUnit_Framework_TestCase
$query->expects($this->once())
->method('setParameter')
->with('ORMQueryBuilderLoader_getEntitiesByIds_id', array(1, 2, 3), Connection::PARAM_INT_ARRAY)
->with('ORMQueryBuilderLoader_getEntitiesByIds_id', array(1, 2, 3, '9223372036854775808'), Connection::PARAM_INT_ARRAY)
->willReturn($query);
$qb = $this->getMockBuilder('Doctrine\ORM\QueryBuilder')
@ -103,7 +103,7 @@ class ORMQueryBuilderLoaderTest extends \PHPUnit_Framework_TestCase
->from('Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity', 'e');
$loader = new ORMQueryBuilderLoader($qb);
$loader->getEntitiesByIds('id', array(1, '', 2, 3, 'foo'));
$loader->getEntitiesByIds('id', array(1, '', 2, 3, 'foo', '9223372036854775808'));
}
public function testEmbeddedIdentifierName()