Skip to content

Loading…

DBAL-577: AbstractPlatform::getInExpression calls non-existent method AbstractPlatform::getIdentifiers #1787

Closed
doctrinebot opened this Issue · 5 comments

2 participants

@doctrinebot

Jira issue originally created by user heruan:

The method AbstractPlatform::getInExpression($column, $values) still calls the non-existent method AbstractPlatform::getIdentifiers($values). This prevents the use of this method causing a brutal PHP failure. Why not pass the identifiers array instead of the values array, until the method is implemented?

@doctrinebot

Comment created by heruan:

I really don't see the meaning of AbstractPlatform::getIdentifiers.
For example, suppose I want to find all rows where field 'tag' is in ['foo', 'bar', 'baz'], I would use getInExpression like this:

$array = array('foo', 'bar', 'baz');
$queryBuilder = $this->conn->createQueryBuilder();
$placeholders = array_map(array($queryBuilder, 'createNamedParameter'), $array);
$field = $this->link->quoteIdentifier('tag');
$inExpression = $this->conn->getDatabasePlatform()->getInExpression($field, $placeholders);
$result = $queryBuilder->select('*')->from('table', 't)->where($inExpression)->execute();

which works perfectly fine without any need of calling a getIdentifiers method.

@doctrinebot

Comment created by @beberlei:

Code was removed, as it was a leftover from Doctrine 1.* times.

@doctrinebot

Issue was closed with resolution "Fixed"

@doctrinebot

Comment created by heruan:

The whole getInExpression method was removed? How to build a IN-expression abstracting from platform now? The method worked, expect for a call to a non-existant AbstractPlatform::getIdentifiers.

@doctrinebot

Comment created by @beberlei:

The method did not work, because it was impossible to implement "getIdentifiers" at that point. You can build an IN expression by binding to a statement with "$statement->bindValue(1, $array, \Doctrine\DBAL\Connection::PARAMINT_ARRAY);" or PARAM_STRARRAY.

Alternatively you can do: implode(", ", array_map(array($connection, 'quote'), $values));

@doctrinebot doctrinebot added the Bug label
@beberlei beberlei was assigned by doctrinebot
@doctrinebot doctrinebot closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.