DDC-317: Using a function only in hydration returns only one result #392

Closed
opened 2026-01-22 12:36:55 +01:00 by admin · 6 comments
Owner

Originally created by @doctrinebot on GitHub (Feb 11, 2010).

Jira issue originally created by user @beberlei:

Output of $arg:

array(1) {
  [-1]=>
  array(1) {
    ["namedep"]=>
    string(25) "Jonathan W.Administration"
  }
}
    public function testConcatFunction()
    {
        $this->generateFixture();
        $arg = $this->_em->createQuery('SELECT CONCAT(m.name, m.department) AS namedep FROM Doctrine\Tests\Models\Company\CompanyManager m')
                         ->getArrayResult();

        $this->assertEquals(4, count($arg)); // fails with 1
    }

    protected function generateFixture()
    {
        $manager1 = new CompanyManager();
        $manager1->setName('Roman B.');
        $manager1->setTitle('');
        $manager1->setDepartment('IT');
        $manager1->setSalary(100000);

        $manager2 = new CompanyManager();
        $manager2->setName('Benjamin E.');
        $manager2->setTitle('');
        $manager2->setDepartment('HR');
        $manager2->setSalary(200000);

        $manager3 = new CompanyManager();
        $manager3->setName('Guilherme B.');
        $manager3->setTitle('');
        $manager3->setDepartment('Complaint Department');
        $manager3->setSalary(400000);

        $manager4 = new CompanyManager();
        $manager4->setName('Jonathan W.');
        $manager4->setTitle('');
        $manager4->setDepartment('Administration');
        $manager4->setSalary(800000);

        $this->_em->persist($manager1);
        $this->_em->persist($manager2);
        $this->_em->persist($manager3);
        $this->_em->persist($manager4);
        $this->_em->flush();
        $this->_em->clear();
    }
Originally created by @doctrinebot on GitHub (Feb 11, 2010). Jira issue originally created by user @beberlei: Output of $arg: ``` array(1) { [-1]=> array(1) { ["namedep"]=> string(25) "Jonathan W.Administration" } } ``` ``` public function testConcatFunction() { $this->generateFixture(); $arg = $this->_em->createQuery('SELECT CONCAT(m.name, m.department) AS namedep FROM Doctrine\Tests\Models\Company\CompanyManager m') ->getArrayResult(); $this->assertEquals(4, count($arg)); // fails with 1 } protected function generateFixture() { $manager1 = new CompanyManager(); $manager1->setName('Roman B.'); $manager1->setTitle(''); $manager1->setDepartment('IT'); $manager1->setSalary(100000); $manager2 = new CompanyManager(); $manager2->setName('Benjamin E.'); $manager2->setTitle(''); $manager2->setDepartment('HR'); $manager2->setSalary(200000); $manager3 = new CompanyManager(); $manager3->setName('Guilherme B.'); $manager3->setTitle(''); $manager3->setDepartment('Complaint Department'); $manager3->setSalary(400000); $manager4 = new CompanyManager(); $manager4->setName('Jonathan W.'); $manager4->setTitle(''); $manager4->setDepartment('Administration'); $manager4->setSalary(800000); $this->_em->persist($manager1); $this->_em->persist($manager2); $this->_em->persist($manager3); $this->_em->persist($manager4); $this->_em->flush(); $this->_em->clear(); } ```
admin added the Bug label 2026-01-22 12:36:55 +01:00
admin closed this issue 2026-01-22 12:36:57 +01:00
Author
Owner

@doctrinebot commented on GitHub (Feb 11, 2010):

Comment created by @beberlei:

Additional bug, changing the DQL to:

SELECT CONCAT(m.name, m.department) AS namedep FROM Doctrine\Tests\Models\Company\CompanyManager m WHERE m.id = 4

returns an empty result.

@doctrinebot commented on GitHub (Feb 11, 2010): Comment created by @beberlei: Additional bug, changing the DQL to: ``` SELECT CONCAT(m.name, m.department) AS namedep FROM Doctrine\Tests\Models\Company\CompanyManager m WHERE m.id = 4 ``` returns an empty result.
Author
Owner

@doctrinebot commented on GitHub (Feb 11, 2010):

Comment created by @beberlei:

Thie following DQL gives a partial error bug:

SELECT m, m.salary+2500 AS add FROM Doctrine\Tests\Models\Company\CompanyManager m

Error:

Doctrine\Tests\ORM\Functional\QueryDqlFunctionTest::testOperatorAdd()
Exception: [Doctrine\Common\DoctrineException] Loading partial objects is dangerous. Fetch full objects or consider using a different fetch mode. If you really want partial objects, set the doctrine.forcePartialLoad query hint to TRUE.
@doctrinebot commented on GitHub (Feb 11, 2010): Comment created by @beberlei: Thie following DQL gives a partial error bug: ``` SELECT m, m.salary+2500 AS add FROM Doctrine\Tests\Models\Company\CompanyManager m ``` Error: ``` Doctrine\Tests\ORM\Functional\QueryDqlFunctionTest::testOperatorAdd() Exception: [Doctrine\Common\DoctrineException] Loading partial objects is dangerous. Fetch full objects or consider using a different fetch mode. If you really want partial objects, set the doctrine.forcePartialLoad query hint to TRUE. ```
Author
Owner

@doctrinebot commented on GitHub (Feb 11, 2010):

Comment created by @beberlei:

The same goes for - * and /

@doctrinebot commented on GitHub (Feb 11, 2010): Comment created by @beberlei: The same goes for - \* and /
Author
Owner

@doctrinebot commented on GitHub (Feb 13, 2010):

Comment created by @beberlei:

Generated SQL of the CONCAT Example:

SELECT CONCAT(c0*.name, c1_.department) AS sclr0 FROM company_managers c2_ INNER JOIN company_employees c1_ ON c2_.id = c1_.id INNER JOIN company_persons c0_ ON c2_.id = c0*.id
@doctrinebot commented on GitHub (Feb 13, 2010): Comment created by @beberlei: Generated SQL of the CONCAT Example: ``` SELECT CONCAT(c0*.name, c1_.department) AS sclr0 FROM company_managers c2_ INNER JOIN company_employees c1_ ON c2_.id = c1_.id INNER JOIN company_persons c0_ ON c2_.id = c0*.id ```
Author
Owner

@doctrinebot commented on GitHub (Feb 19, 2010):

Comment created by romanb:

Should be fixed now.

@doctrinebot commented on GitHub (Feb 19, 2010): Comment created by romanb: Should be fixed now.
Author
Owner

@doctrinebot commented on GitHub (Feb 19, 2010):

Issue was closed with resolution "Fixed"

@doctrinebot commented on GitHub (Feb 19, 2010): Issue was closed with resolution "Fixed"
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#392