DDC-2290: Infer custom Types from the field for query parameters #2876

Open
opened 2026-01-22 14:06:23 +01:00 by admin · 8 comments
Owner

Originally created by @doctrinebot on GitHub (Feb 8, 2013).

Originally assigned to: @beberlei on GitHub.

Jira issue originally created by user mnapoli:

When using a mapping Type that declares convertToDatabaseValue, the method is not always called in queries.

Example:

SELECT ... WHERE entity.field = ?1

(with entity.field being of custom type 'the_mapping_type')

Type::convertToDatabaseValue() is correctly called when using:

$query->setParameter('1', 'foo', 'the*mapping*type');

But it is not called when using:

$query->setParameter('1', 'foo');

which gives a query that returns invalid results.

Like other mapping types in this situation, there is no reason the type is not inferred automatically from the field.

I have written a failing test case in Doctrine\Tests\ORM\Functional\TypeValueSqlTest:

    public function testQueryParameterWithoutType()
    {
        $entity = new CustomTypeUpperCase();
        $entity->lowerCaseString = 'foo';

        $this->_em->persist($entity);
        $this->_em->flush();

        $id = $entity->id;

        $this->_em->clear();

        $query = $this->_em->createQuery('SELECT c.id from Doctrine\Tests\Models\CustomType\CustomTypeUpperCase c where c.lowerCaseString = ?1');
        $query->setParameter('1', 'foo');

        $result = $query->getResult();

        $this->assertCount(1, $result);
        $this->assertEquals($id, $result[0]['id']);
    }
Originally created by @doctrinebot on GitHub (Feb 8, 2013). Originally assigned to: @beberlei on GitHub. Jira issue originally created by user mnapoli: When using a mapping Type that declares `convertToDatabaseValue`, the method is not always called in queries. Example: ``` SELECT ... WHERE entity.field = ?1 ``` (with `entity.field` being of custom type 'the_mapping_type') `Type::convertToDatabaseValue()` is correctly called when using: ``` $query->setParameter('1', 'foo', 'the*mapping*type'); ``` But it is not called when using: ``` $query->setParameter('1', 'foo'); ``` which gives a query that returns invalid results. Like other mapping types in this situation, there is no reason the type is not inferred automatically from the field. I have written a failing test case in Doctrine\Tests\ORM\Functional\TypeValueSqlTest: ``` public function testQueryParameterWithoutType() { $entity = new CustomTypeUpperCase(); $entity->lowerCaseString = 'foo'; $this->_em->persist($entity); $this->_em->flush(); $id = $entity->id; $this->_em->clear(); $query = $this->_em->createQuery('SELECT c.id from Doctrine\Tests\Models\CustomType\CustomTypeUpperCase c where c.lowerCaseString = ?1'); $query->setParameter('1', 'foo'); $result = $query->getResult(); $this->assertCount(1, $result); $this->assertEquals($id, $result[0]['id']); } ```
admin added the Improvement label 2026-01-22 14:06:23 +01:00
Author
Owner

@doctrinebot commented on GitHub (Feb 8, 2013):

Comment created by mnapoli:

See also http://www.doctrine-project.org/jira/browse/DDC-2224

@doctrinebot commented on GitHub (Feb 8, 2013): Comment created by mnapoli: See also http://www.doctrine-project.org/jira/browse/[DDC-2224](http://www.doctrine-project.org/jira/browse/DDC-2224)
Author
Owner

@doctrinebot commented on GitHub (Feb 8, 2013):

Comment created by mnapoli:

The test is in this branch: https://github.com/myc-sense/doctrine2/tree/DDC-2290

@doctrinebot commented on GitHub (Feb 8, 2013): Comment created by mnapoli: The test is in this branch: https://github.com/myc-sense/doctrine2/tree/[DDC-2290](http://www.doctrine-project.org/jira/browse/DDC-2290)
Author
Owner

@doctrinebot commented on GitHub (Oct 29, 2013):

Comment created by mnapoli:

The organization name has changed so the previous URL is a 404.

Here is the branch containing the failing testcase: https://github.com/myclabs/doctrine2/tree/DDC-2290

@doctrinebot commented on GitHub (Oct 29, 2013): Comment created by mnapoli: The organization name has changed so the previous URL is a 404. Here is the branch containing the failing testcase: https://github.com/myclabs/doctrine2/tree/[DDC-2290](http://www.doctrine-project.org/jira/browse/DDC-2290)
Author
Owner

@doctrinebot commented on GitHub (Jan 28, 2014):

Comment created by benjamin:

Any news on this one? Also, I just noticed that it does not cover the original problem I've reported in DDC-2224: I was specifically talking about convertToDatabaseValueSQL() and not convertToDatabaseValue().
My problem is that even when passing the third parameter $type, it does not use the conversion function from convertToDatabaseValueSQL().

Should we reopen DDC-2224?

@doctrinebot commented on GitHub (Jan 28, 2014): Comment created by benjamin: Any news on this one? Also, I just noticed that it does not cover the original problem I've reported in [DDC-2224](http://www.doctrine-project.org/jira/browse/DDC-2224): I was specifically talking about `convertToDatabaseValueSQL()` and not `convertToDatabaseValue()`. My problem is that even when passing the third parameter `$type`, it does not use the conversion function from `convertToDatabaseValueSQL()`. Should we reopen [DDC-2224](http://www.doctrine-project.org/jira/browse/DDC-2224)?
Author
Owner

@doctrinebot commented on GitHub (Mar 23, 2015):

Comment created by @doctrinebot:

A related Github Pull-Request [GH-1339] was unlabeled:
https://github.com/doctrine/doctrine2/pull/1339

@doctrinebot commented on GitHub (Mar 23, 2015): Comment created by @doctrinebot: A related Github Pull-Request [GH-1339] was unlabeled: https://github.com/doctrine/doctrine2/pull/1339
Author
Owner

@doctrinebot commented on GitHub (Mar 25, 2015):

Comment created by @doctrinebot:

A related Github Pull-Request [GH-1339] was assigned:
https://github.com/doctrine/doctrine2/pull/1339

@doctrinebot commented on GitHub (Mar 25, 2015): Comment created by @doctrinebot: A related Github Pull-Request [GH-1339] was assigned: https://github.com/doctrine/doctrine2/pull/1339
Author
Owner

@doctrinebot commented on GitHub (Mar 25, 2015):

Comment created by @doctrinebot:

A related Github Pull-Request [GH-1339] was merged:
https://github.com/doctrine/doctrine2/pull/1339

@doctrinebot commented on GitHub (Mar 25, 2015): Comment created by @doctrinebot: A related Github Pull-Request [GH-1339] was merged: https://github.com/doctrine/doctrine2/pull/1339
Author
Owner

@kamazee commented on GitHub (Apr 23, 2016):

Lack of this feature seems to be the root cause of #4632

@kamazee commented on GitHub (Apr 23, 2016): Lack of this feature seems to be the root cause of #4632
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#2876