/**
  * 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);
 }