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

Closed
doctrinebot opened this Issue Aug 6, 2013 · 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 Dec 7, 2015
@beberlei beberlei was assigned by doctrinebot Dec 7, 2015
@doctrinebot doctrinebot closed this Dec 7, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment