/** * @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); }
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); }
/** * @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]); } } } }
/** * 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']; }
public function testThatTheAppropriateEntityIsReturned() { $entity = $this->entityManager->getEntityForObject(new RelatedEntity()); $this->assertInstanceOf(Entity::class, $entity); $this->assertEquals(RelatedEntity::class, $entity->getClassName()); }
public function testThatUpdateSetsFields() { $this->expectQuery('UPDATE test SET field2=? WHERE key=?'); $this->entityFinder->where('key=?')->update(['field2' => 'foobar']); $this->entityManager->commit(); }