Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
doctrinebot opened this issue Aug 6, 2013 · 6 comments
Assignees
Labels

Comments

@doctrinebot
Copy link

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
Copy link
Author

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
Copy link
Author

Comment created by @beberlei:

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

@doctrinebot
Copy link
Author

Issue was closed with resolution "Fixed"

@doctrinebot
Copy link
Author

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
Copy link
Author

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::PARAM_INT_ARRAY);" or PARAM_STR_ARRAY.

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

@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 18, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants