Пример #1
0
 public function testIssue()
 {
     $className = 'Doctrine\\Tests\\Models\\Company\\CompanyEmployee';
     $date1 = new \DateTime('2011-11-11 11:11:11');
     $date2 = new \DateTime('2012-12-12 12:12:12');
     $employee1 = new CompanyEmployee();
     $employee2 = new CompanyEmployee();
     $employee1->setName("Fabio B. Silva");
     $employee1->setStartDate(new \DateTime('yesterday'));
     $employee1->setDepartment("R&D");
     $employee1->setSalary(100);
     $employee2->setName("Doctrine Bot");
     $employee1->setStartDate(new \DateTime('yesterday'));
     $employee2->setDepartment("QA");
     $employee2->setSalary(100);
     $this->_em->persist($employee1);
     $this->_em->persist($employee2);
     $this->_em->flush();
     $this->_em->clear();
     $this->_em->createQueryBuilder()->update($className, 'e')->set('e.startDate', ':date')->set('e.salary', ':salary')->where('e = :e')->setParameters(array('e' => $employee1, 'date' => $date1, 'salary' => 101))->getQuery()->useQueryCache(true)->execute();
     $this->_em->createQueryBuilder()->update($className, 'e')->set('e.startDate', ':date')->set('e.salary', ':salary')->where('e = :e')->setParameters(array('e' => $employee2, 'date' => $date2, 'salary' => 102))->getQuery()->useQueryCache(true)->execute();
     $this->_em->clear();
     $e1 = $this->_em->find($className, $employee1->getId());
     $e2 = $this->_em->find($className, $employee2->getId());
     $this->assertEquals(101, $e1->getSalary());
     $this->assertEquals(102, $e2->getSalary());
     $this->assertEquals($date1, $e1->getStartDate());
     $this->assertEquals($date2, $e2->getStartDate());
     $this->_em->createQueryBuilder()->update($className, 'e')->set('e.startDate', '?1')->set('e.salary', '?2')->where('e = ?0')->setParameters(array($employee1, $date1, 101))->getQuery()->useQueryCache(true)->execute();
     $this->_em->createQueryBuilder()->update($className, 'e')->set('e.startDate', '?1')->set('e.salary', '?2')->where('e = ?0')->setParameters(array($employee2, $date2, 102))->getQuery()->useQueryCache(true)->execute();
     $this->_em->clear();
     $e1 = $this->_em->find($className, $employee1->getId());
     $e2 = $this->_em->find($className, $employee2->getId());
     $this->assertEquals(101, $e1->getSalary());
     $this->assertEquals(102, $e2->getSalary());
     $this->assertEquals($date1, $e1->getStartDate());
     $this->assertEquals($date2, $e2->getStartDate());
 }