У меня есть следующий класс с наследованием одной таблицы:
/**
* @ORM\Entity
* @ORM\Entity(repositoryClass="MyProject\MyBundle\Repository\ParameterRepository")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"MidUpperArmCircumference" = "MyProject\MyBundle\Entity\MidUpperArmCircumference", "parameter" = "Parameter"})
*/
class Parameter{
...
}
и я пытаюсь получить экземпляр MidUpperCircumference:
...
$repository = $this->getDoctrine()->getRepository('MyprojectMyBundle:Parameter');
$discr = 'MyProject\MyBundle\Entity\MidUpperArmCircumference';
$midUpper = $repository->findOneByDiscr($discr);
и у меня тоже есть:
//MyProject\MyBundle\Repository\ParameterRepository
...
public function findOneByDiscr($discr)
{
$query = $this->getEntityManager()
->createQuery(
'SELECT u FROM MyProjectMyBundle:Parameter u
WHERE u INSTANCE OF :entity ')
->setParameter('entity', $discr);
try {
return $query->getSingleResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
И я получил эту ошибку:
Предупреждение: get_class () ожидает, что параметр 1 будет объектом, строка указана в строке D: \ workspace \ Project \ Symfony2 \ vendor \ doctrine \ lib \ Doctrine \ ORM \ Query \ SqlWalker.php 1727