From 0b8edcb2fed2516e8a24fa86258e552652ad9baa Mon Sep 17 00:00:00 2001 From: Massimiliano Arione Date: Wed, 3 Feb 2016 15:31:21 +0100 Subject: [PATCH 1/3] add 'guid' to list of exception to filter out See https://github.com/symfony/symfony/issues/14583#issuecomment-179262543 --- .../Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php index 55fc340d8d2ee..e6396f12d4e84 100644 --- a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php +++ b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php @@ -85,7 +85,7 @@ public function getEntitiesByIds($identifier, array $values) // Guess type $entity = current($qb->getRootEntities()); $metadata = $qb->getEntityManager()->getClassMetadata($entity); - if (in_array($metadata->getTypeOfField($identifier), array('integer', 'bigint', 'smallint'))) { + if (in_array($metadata->getTypeOfField($identifier), array('integer', 'bigint', 'smallint', 'guid'))) { $parameterType = Connection::PARAM_INT_ARRAY; // Filter out non-integer values (e.g. ""). If we don't, some From 91f9444e7683ab30f40e03f0831a4293ab878eeb Mon Sep 17 00:00:00 2001 From: Massimiliano Arione Date: Wed, 3 Feb 2016 16:08:24 +0100 Subject: [PATCH 2/3] fix guid case --- .../Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php index e6396f12d4e84..5f347ddf3b70f 100644 --- a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php +++ b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php @@ -85,7 +85,7 @@ public function getEntitiesByIds($identifier, array $values) // Guess type $entity = current($qb->getRootEntities()); $metadata = $qb->getEntityManager()->getClassMetadata($entity); - if (in_array($metadata->getTypeOfField($identifier), array('integer', 'bigint', 'smallint', 'guid'))) { + if (in_array($metadata->getTypeOfField($identifier), array('integer', 'bigint', 'smallint'))) { $parameterType = Connection::PARAM_INT_ARRAY; // Filter out non-integer values (e.g. ""). If we don't, some @@ -93,6 +93,13 @@ public function getEntitiesByIds($identifier, array $values) $values = array_values(array_filter($values, function ($v) { return (string) $v === (string) (int) $v; })); + } elseif ('guid' === $metadata->getTypeOfField($identifier)) { + $parameterType = Connection::PARAM_INT_ARRAY; + + // Like above, but we just filter out empty strings. + $values = array_values(array_filter($values, function ($v) { + return (string) $v !== ''; + })); } else { $parameterType = Connection::PARAM_STR_ARRAY; } From 141eb2376ab3d8cae961be66c310f10b51e155f6 Mon Sep 17 00:00:00 2001 From: Massimiliano Arione Date: Wed, 2 Mar 2016 14:43:47 +0100 Subject: [PATCH 3/3] Fix parameter type --- .../Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php index 5f347ddf3b70f..ce4d508b8e043 100644 --- a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php +++ b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php @@ -94,7 +94,7 @@ public function getEntitiesByIds($identifier, array $values) return (string) $v === (string) (int) $v; })); } elseif ('guid' === $metadata->getTypeOfField($identifier)) { - $parameterType = Connection::PARAM_INT_ARRAY; + $parameterType = Connection::PARAM_STR_ARRAY; // Like above, but we just filter out empty strings. $values = array_values(array_filter($values, function ($v) {