コード例 #1
0
 /**
  * @param Comment $comment
  * @param         $property
  * @param Entity  $entity
  */
 private function processRelation(Comment $comment, $property, Entity $entity)
 {
     /** @var \ORMiny\Annotations\Relation $relationAnnotation */
     $relationAnnotation = current($comment->getAnnotationType(RelationAnnotation::class));
     $relation = Relation::create($entity, $this->manager->get($relationAnnotation->target), $relationAnnotation, $this->createSetter($entity, $property, $relationAnnotation), $this->createGetter($entity, $property, $relationAnnotation));
     $entity->addRelation($relationAnnotation->name, $relationAnnotation->foreignKey, $relation);
 }
コード例 #2
0
ファイル: EntityTest.php プロジェクト: bugadani/orminy
 public function testParameterOrderIsCorrect()
 {
     $this->expectQuery('SELECT pk, fk FROM hasOne WHERE (a=?) AND pk IN(?, ?)', [2, 5, 6], []);
     $entity = $this->entityManager->get('HasOneRelationEntity');
     $finder = $entity->find();
     $finder->where($entity->expression()->eq('a', $finder->parameter(2)))->get(5, 6);
 }
コード例 #3
0
ファイル: Entity.php プロジェクト: bugadani/orminy
 /**
  * @param $modifiedManyManyRelations
  * @param $primaryKey
  */
 private function updateManyToManyRelations($modifiedManyManyRelations, $primaryKey)
 {
     $queryBuilder = $this->manager->getDriver()->getQueryBuilder();
     $tableName = $this->getTable();
     foreach ($modifiedManyManyRelations as $relationName => $keys) {
         /** @var Relation\ManyToMany $relation */
         $relation = $this->getRelation($relationName);
         $joinTable = $relation->getJoinTable();
         $relatedTableName = $relation->getEntity()->getTable();
         $leftKey = $tableName . '_' . $relation->getForeignKey();
         $rightKey = $relatedTableName . '_' . $relation->getTargetKey();
         if (!empty($keys['deleted'])) {
             $expression = $queryBuilder->expression();
             $queryBuilder->delete($joinTable)->where($expression->eq($leftKey, $queryBuilder->createPositionalParameter($primaryKey))->andX($expression->eq($rightKey, $queryBuilder->createPositionalParameter($keys['deleted']))))->query();
         }
         if (!empty($keys['inserted'])) {
             $insertQuery = $queryBuilder->insert($joinTable)->values([$leftKey => $queryBuilder->createPositionalParameter($primaryKey), $rightKey => '?']);
             foreach ($keys['inserted'] as $foreignKey) {
                 $insertQuery->query([1 => $foreignKey]);
             }
         }
     }
 }
コード例 #4
0
ファイル: EntityFinder.php プロジェクト: bugadani/orminy
 /**
  * Count selected records
  *
  * @param array $parameters
  *
  * @return mixed
  */
 public function count(array $parameters = [])
 {
     $this->manager->commit();
     $count = $this->applyFilters($this->queryBuilder->select('count(*) as count')->from($this->entity->getTable(), $this->alias))->query(array_merge($this->parameters, $parameters))->fetch();
     return $count['count'];
 }
コード例 #5
0
ファイル: EntityManagerTest.php プロジェクト: bugadani/orminy
 public function testThatTheAppropriateEntityIsReturned()
 {
     $entity = $this->entityManager->getEntityForObject(new RelatedEntity());
     $this->assertInstanceOf(Entity::class, $entity);
     $this->assertEquals(RelatedEntity::class, $entity->getClassName());
 }
コード例 #6
0
ファイル: EntityFinderTest.php プロジェクト: bugadani/orminy
 public function testThatUpdateSetsFields()
 {
     $this->expectQuery('UPDATE test SET field2=? WHERE key=?');
     $this->entityFinder->where('key=?')->update(['field2' => 'foobar']);
     $this->entityManager->commit();
 }