/** * @param $object * * @return mixed */ private function insert($object) { //TODO: this should only be done if there is a Delete query pending for the same entity table $this->manager->commit(); $query = $this->manager->getDriver()->getQueryBuilder()->insert($this->getTable()); $query->values($query->createPositionalParameter(array_filter($this->toArray($object), [Utils::class, 'notNull']))); return $this->setFieldValue($object, $this->getPrimaryKey(), $query->query()); }
public function testSettingBelongsToRelationObjectUpdatesForeignKey() { $this->expectQueries([['SELECT primaryKey, foreignKey FROM related WHERE primaryKey=?', [2], [['primaryKey' => 2, 'foreignKey' => null]]], ['UPDATE related SET foreignKey=? WHERE primaryKey=?', [1, 2]]]); $entity = $this->entityManager->get('HasManyTargetEntity'); $relationEntity = $this->entityManager->get('HasManyRelationEntity'); /** @var HasManyTargetEntity $object */ $object = $entity->get(2); $object->belongs = $relationEntity->create(['pk' => 1], true); $entity->save($object); $this->entityManager->commit(); }
/** * 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 testThatUpdateSetsFields() { $this->expectQuery('UPDATE test SET field2=? WHERE key=?'); $this->entityFinder->where('key=?')->update(['field2' => 'foobar']); $this->entityManager->commit(); }