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?
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.
Comment created by @beberlei:
Code was removed, as it was a leftover from Doctrine 1.* times.
Issue was closed with resolution "Fixed"
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.
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));