我在 OneToMany 关系中有两个实体,Perfil 和 IPerfil。Perfil 可以关联多个 IPerfil:
>
class Perfil
{
/**
* @var integer $id
*
* @ORM\Column(name="id_perfiles", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="P360.perfiles_seq")
* @ORM\OneToMany(targetEntity="IPerfil", mappedBy="id")
*/
private $id;
还有一个:
>
class IPerfil
{
/**
* @var integer $id
* @ORM\ManyToOne(targetEntity="Perfil")
* @ORM\JoinColumn(name="id_perfiles", referencedColumnName="id_perfiles", onDelete="CASCADE")
*/
protected $id;
我能够从 IPerfil 延迟加载到 Perfil,但不能在另一个方向(从 Perfil 到 IPerfil),但是如果我不能通过 IPerfil 或 createQueryBuilder()->setPameter 执行任何 DQL... Symfony 将始终返回一个像这样的错误:
[语义错误] 'id_perfiles FROM' 附近的第 0 行,第 9 列:错误:无效的 PathExpression。必须是 StateFieldPathExpression。
如果我用
@ORM\Column(name="id_perfiles", type="integer")
然后我可以使用实体构建 DQL,但这种关系将不再有效。
我在这里迷路了......似乎我在关系定义中遗漏了一些东西,但不知道。
提前感谢任何提示。
编辑
如果我使用:
$entities=$em->getRepository('usuariosBundle:IPerfil')->findAll(array());
它不会给出错误,但我需要过滤和排序结果。
$entities=$em->getRepository('usuariosBundle:IPerfil')->findBy(array(),array('id' => 'asc', 'descripcion' => 'asc'));
无法识别的字段:id
$query=$em->getRepository('usuariosBundle:IPerfil')->createQueryBuilder('p')
->orderBy('id', 'ASC')
->getQuery();
$entities = $query->getResult();
* [语义错误] 第 0 行,'id ASC' 附近的第 60 列:错误:'id' 未定义。*
$entities = $this->get('doctrine')->getEntityManager()->createQuery('SELECT p.id FROM usuariosBundle:IPerfil p ')->getResult();
[语义错误] 第 0 行,第 9 列靠近 'id FROM usuariosBundle:IPerfil':错误:无效的 PathExpression。必须是 StateFieldPathExpression。