Skip to content

Loading…

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

Open
doctrinebot opened this Issue · 7 comments

2 participants

@doctrinebot

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 'themappingtype')

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']);
    }
@doctrinebot

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)

@doctrinebot

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

Comment created by @doctrinebot:

A related Github Pull-Request [GH-1339] was unlabeled:
#1339

@doctrinebot

Comment created by @doctrinebot:

A related Github Pull-Request [GH-1339] was assigned:
#1339

@doctrinebot

Comment created by @doctrinebot:

A related Github Pull-Request [GH-1339] was merged:
#1339

@beberlei beberlei was assigned by doctrinebot
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.