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

Open
doctrinebot opened this Issue Feb 8, 2013 · 8 comments

3 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 Dec 6, 2015
@kamazee

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment