Skip to content

Commit 3416399

Browse files
committed
improve source with @dunglas comments.
1 parent 153f394 commit 3416399

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

src/Bridge/Doctrine/Orm/Filter/SearchFilter.php

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -146,25 +146,23 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
146146
*/
147147

148148
// let's do a very simple query if we don't need the complex one (99% of time)
149-
if (\in_array($metadata->getTypeOfField($field), ['string', 'integer'], true)) {
149+
$type = $metadata->getTypeOfField($field);
150+
if (\in_array($type, ['string', 'integer'], true)) {
150151
$queryBuilder
151152
->andWhere(sprintf($wrapCase('%s.%s').' IN (:%s)', $alias, $field, $valueParameter))
152153
->setParameter($valueParameter, $caseSensitive ? $values : array_map('strtolower', $values));
153154
} else {
154155
$inQuery = [];
155-
$args = [];
156-
$type = $metadata->getTypeOfField($field);
156+
$nbArgs = \count($values);
157+
158+
// QueryBuilder->setParameters() reset current parameters set, so we need to merge them all together
159+
$parameters = $queryBuilder->getParameters();
157160

158-
for ($i = 0; $i < \count($values); ++$i) {
161+
for ($i = 0; $i < $nbArgs; ++$i) {
159162
$inQuery[] = ':filterproperty'.$i;
160-
$args[] = new Parameter('filterproperty'.$i, $caseSensitive ? $values[$i] : strtolower($values[$i]), $type);
163+
$parameters->add(new Parameter('filterproperty'.$i, $caseSensitive ? $values[$i] : strtolower($values[$i]), $type));
161164
}
162165

163-
// setParameters reset current parameters set, so we need to merge with getParameters()
164-
$parameters = new ArrayCollection($args);
165-
foreach ($queryBuilder->getParameters() as $p) {
166-
$parameters->add($p);
167-
}
168166
$queryBuilder
169167
->andWhere(sprintf($wrapCase('%s.%s').' IN (%s)', $alias, $field, implode(',', $inQuery)))
170168
->setParameters($parameters);
@@ -220,10 +218,10 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
220218
*
221219
* @throws InvalidArgumentException If strategy does not exist
222220
*/
223-
protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $alias, string $field, $value, bool $caseSensitive)
221+
protected function addWhereByStrategy(string $strategy, QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $alias, string $field, $value, bool $caseSensitive, ClassMetadata $metadata = null)
224222
{
225223
// check if we have metadata
226-
if (($metadata = func_get_arg(7)) instanceof ClassMetadata) {
224+
if ($metadata instanceof ClassMetadata) {
227225
$type = $metadata->getTypeOfField($field);
228226
} else {
229227
@trigger_error('addWhereByStrategy() will require argument ClassMetadata in 3.0.', E_USER_DEPRECATED);

0 commit comments

Comments
 (0)