/** * @param IQueryable $repository * @return Doctrine\ORM\Query */ protected function getQuery(IQueryable $repository) { $query = $this->doCreateQuery($repository); if ($query instanceof Doctrine\ORM\QueryBuilder) { return $this->lastQuery = $query->getQuery(); } elseif ($query instanceof Doctrine\ORM\Query) { return $this->lastQuery = $query; } $class = $this->getReflection()->getMethod('doCreateQuery')->getDeclaringClass(); throw new Nette\InvalidStateException("Method " . $class . "::doCreateQuery() must return" . " instanceof Doctrine\\ORM\\Query or instaceof Doctrine\\ORM\\QueryBuilder, " . Kdyby\Tools\Mixed::getType($query) . " given."); }
/** * @return object * @throws \Kdyby\UnexpectedValueException */ protected function createNewEntity() { $className = $this->getClassName(); if ($factory = $this->getEntityFactory()) { $parentEntity = $this->getParentEntity(); $related = $factory($parentEntity, $this); if (!$related instanceof $className) { throw new \Nette\UnexpectedValueException('Factory of CollectionContainer ' . $this->name . 'must return an instance of "' . $className . '", ' . Kdyby\Tools\Mixed::getType($related) . ' returned.'); } } else { $related = new $className(); } return $related; }