/** * Converts a comparison expression into the target query language output. * * @param \Doctrine\Common\Collections\Expr\Comparison $comparison * * @return mixed */ public function walkComparison(Comparison $comparison) { $field = $comparison->getField(); $value = $comparison->getValue()->getValue(); // shortcut for walkValue() if (isset($this->classMetadata->associationMappings[$field]) && $value !== null && !is_object($value) && !in_array($comparison->getOperator(), array(Comparison::IN, Comparison::NIN))) { throw PersisterException::matchingAssocationFieldRequiresObject($this->classMetadata->name, $field); } return $this->persister->getSelectConditionStatementSQL($field, $value, null, $comparison->getOperator()); }
public function testExpandCriteriaParametersWillExpandCompositeEntityKeys() { $country = new Country("IT", "Italy"); $admin1 = new Admin1(10, "Rome", $country); $criteria = Criteria::create(); $criteria->andWhere(Criteria::expr()->eq("admin1", $admin1)); list($values, $types) = $this->_persister->expandCriteriaParameters($criteria); $this->assertEquals(array('integer', 'string'), $types); $this->assertEquals(array(10, 'IT'), $values); }
/** * @test */ public function thatApiUserRetrievesByUsername() { $email = '*****@*****.**'; $apiUser = $this->getApiUser(); $this->em->expects($this->once())->method('getUnitOfWork')->will($this->returnValue($this->unitOfWork)); $this->unitOfWork->expects($this->once())->method('getEntityPersister')->with($this->equalTo(self::DUMMY_CLASS_NAME))->will($this->returnValue($this->entityPersister)); $this->entityPersister->expects($this->once())->method('load')->with($this->equalTo(array('email' => $email)), $this->equalTo(null), $this->equalTo(null), array(), $this->equalTo(0), $this->equalTo(1), $this->equalTo(null))->will($this->returnValue($apiUser)); $retrievedApiUser = $this->repository->findOneBy(array('email' => $email)); $this->assertNotNull($retrievedApiUser); $this->assertEquals($apiUser, $retrievedApiUser); }
/** * @test */ public function thatBranchEmailConfigurationRetrievesByBranchId() { $branchId = 1; $branchEmailConfiguration = $this->getBranchEmailConfiguartion(); $this->em->expects($this->once())->method('getUnitOfWork')->will($this->returnValue($this->unitOfWork)); $this->unitOfWork->expects($this->once())->method('getEntityPersister')->with($this->equalTo(self::DUMMY_CLASS_NAME))->will($this->returnValue($this->entityPersister)); $this->entityPersister->expects($this->once())->method('load')->with($this->equalTo(['branchId' => $branchId]), $this->equalTo(null), $this->equalTo(null), $this->equalTo([]), $this->equalTo(null), $this->equalTo(1), $this->equalTo(null))->will($this->returnValue($branchEmailConfiguration)); $retrievedBranchEmailConfiguration = $this->repository->findOneBy(['branchId' => $branchId]); $this->assertNotNull($retrievedBranchEmailConfiguration); $this->assertEquals($branchEmailConfiguration, $retrievedBranchEmailConfiguration); }
public function testFindAllByTicket() { $messageReference = $this->getMessageReference(); $ticket = $messageReference->getTicket(); $references = array($messageReference); $this->em->expects($this->once())->method('getUnitOfWork')->will($this->returnValue($this->unitOfWork)); $this->unitOfWork->expects($this->once())->method('getEntityPersister')->with($this->equalTo(self::DUMMY_CLASS_NAME))->will($this->returnValue($this->entityPersister)); $this->entityPersister->expects($this->once())->method('loadAll')->with($this->equalTo(array('ticket' => $ticket)), null, null, null)->will($this->returnValue($references)); $result = $this->repository->findAllByTicket($ticket); $this->assertEquals($references, $result); }
/** * {@inheritdoc} */ protected function prepareInsertData($entity) { $data = parent::prepareInsertData($entity); // Populate the discriminator column $discColumn = $this->class->discriminatorColumn; $this->columnTypes[$discColumn['name']] = $discColumn['type']; $data[$this->getDiscriminatorColumnTableName()][$discColumn['name']] = $this->class->discriminatorValue; return $data; }
/** * @test */ public function thatGetsAll() { $entities = array(new EntityStub(), new EntityStub()); $this->em->expects($this->once())->method('getUnitOfWork')->will($this->returnValue($this->unitOfWork)); $this->unitOfWork->expects($this->once())->method('getEntityPersister')->with($this->equalTo(self::CLASS_NAME))->will($this->returnValue($this->entityPersister)); $this->entityPersister->expects($this->once())->method('loadAll')->with($this->equalTo(array()), $this->equalTo(null), $this->equalTo(null), $this->equalTo(null))->will($this->returnValue($entities)); $retrievedEntities = $this->repository->getAll(); $this->assertEquals($entities, $retrievedEntities); }
/** * {@inheritDoc} */ protected function doInitialize() { $elements = $this->entityPersister->loadCriteria($this->criteria); $this->collection = new ArrayCollection($elements); }
public function testCountEntities() { $this->assertEquals(0, $this->_persister->count()); }
/** * Modified version of BasicEntityPersister::prepareUpdateData() * git revision d9fc5388f1aa1751a0e148e76b4569bd207338e9 (v2.5.3) * * @license MIT * * @author Roman Borschel <*****@*****.**> * @author Giorgio Sironi <*****@*****.**> * @author Benjamin Eberlei <*****@*****.**> * @author Alexander <*****@*****.**> * @author Fabio B. Silva <*****@*****.**> * @author Rob Caiger <*****@*****.**> * @author Simon Mönch <*****@*****.**> * * @param EntityPersister|BasicEntityPersister $persister * @param $entity * * @return array */ private function prepareUpdateData($persister, $entity) { $uow = $this->em->getUnitOfWork(); $classMetadata = $persister->getClassMetadata(); $versionField = null; $result = array(); if (($versioned = $classMetadata->isVersioned) != false) { $versionField = $classMetadata->versionField; } foreach ($uow->getEntityChangeSet($entity) as $field => $change) { if (isset($versionField) && $versionField == $field) { continue; } if (isset($classMetadata->embeddedClasses[$field])) { continue; } $newVal = $change[1]; if (!isset($classMetadata->associationMappings[$field])) { $columnName = $classMetadata->columnNames[$field]; $result[$persister->getOwningTable($field)][$columnName] = $newVal; continue; } $assoc = $classMetadata->associationMappings[$field]; // Only owning side of x-1 associations can have a FK column. if (!$assoc['isOwningSide'] || !($assoc['type'] & ClassMetadata::TO_ONE)) { continue; } if ($newVal !== null) { if ($uow->isScheduledForInsert($newVal)) { $newVal = null; } } $newValId = null; if ($newVal !== null) { if (!$uow->isInIdentityMap($newVal)) { continue; } $newValId = $uow->getEntityIdentifier($newVal); } $targetClass = $this->em->getClassMetadata($assoc['targetEntity']); $owningTable = $persister->getOwningTable($field); foreach ($assoc['joinColumns'] as $joinColumn) { $sourceColumn = $joinColumn['name']; $targetColumn = $joinColumn['referencedColumnName']; $result[$owningTable][$sourceColumn] = $newValId ? $newValId[$targetClass->getFieldForColumn($targetColumn)] : null; } } return $result; }
/** * @param string $field * @param mixed $value * @param null $assoc * @param null $comparison * * @return string */ public function getSelectConditionStatementSQL($field, $value, $assoc = null, $comparison = null) { $condition = parent::getSelectConditionStatementSQL($field, $value, $assoc, $comparison); $condition = preg_replace('/(\\.(@?\\b\\w+?\\b))/', '$2', $condition); return $condition; }
/** * @expectedException Doctrine\ORM\ORMException */ public function testSelectConditionStatementIn() { $this->_persister->getSelectConditionStatementSQL('admin1', array(), array(), Comparison::IN); }