0

我尝试映射三元关系。ER模型是下一个: 在此处输入图像描述

Responsable 是用户,Alumno 是另一种类型的用户(学生)。TipoRelacion 定义 Responsable 是学生(Alumno)的母亲、父亲还是导师。

所以,我认为,映射关系(alumno_relacion_responsable)并从其他表中定义 bidireccionals OneToMany。

我的实体是:

class Responsable{
     // other declarations

    /**
     * @ORM\OneToMany(targetEntity="ResponsableAlumno", mappedBy="alumno")
     */
    protected $hijos;

    // More declarations
}

class Alumno{
     // other declarations

    /**
     * @ORM\OneToMany(targetEntity="ResponsableAlumno", mappedBy="responsable")
     */
    protected $padres;

    // More declarations
}

因此,在关系芯片实体中:

Class ResponsableAlumno{

    /**
     * @ORM\Id
     * @ORM\Column(name="Responsable_IdUsuario")
     * @ORM\ManyToOne(targetEntity="Responsable", inversedBy="idusuario")
     * @ORM\JoinColumn(name="Responsable_IdUsuario", referencedColumnName="idusuario")
     */

    protected $responsable;

    /**
     * @ORM\Id
     * @ORM\Column(name="Alumno_IdUsuario")
     * @ORM\ManyToOne(targetEntity="Alumno", inversedBy="idusuario")
     * @ORM\JoinColumn(name="Alumno_IdUsuario", referencedColumnName="idusuario")
     */
    protected $alumno;

    // Other declarations
}

但是,当测试实体时,Symfony 说(在加载脚本上):

注意:未定义索引:/var/www/AppsManantiales/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php 中的 alumno

关于我的错误是什么的任何想法?

4

1 回答 1

1

inversedBy 设置应该匹配“hijos”和“padres”而不是关联实体的 ID。还有一些其他问题,ORM\Id 不应该在关系列上指定,并且 Column 也不需要指定:

class ResponsableAlumno{

    /**
     * @ORM\ManyToOne(targetEntity="Responsable", inversedBy="hijos")
     * @ORM\JoinColumn(name="Responsable_IdUsuario", referencedColumnName="idusuario")
     */

    protected $responsable;

    /**
     * @ORM\ManyToOne(targetEntity="Alumno", inversedBy="padres")
     * @ORM\JoinColumn(name="Alumno_IdUsuario", referencedColumnName="idusuario")
     */
    protected $alumno;

    // Other declarations
}

虽然,我确实相信您的关系已经翻转,但我想您正在寻找更像这样的东西:

  • 许多负责一个负责任的校友
  • 许多校友对一个负责任的校友
  • 一个负责任的校友对许多负责任的人
  • 一个负责任的校友对许多校友

或者更可能是一位校友对一位负责任的校友,反之亦然。

在此处查看有关 Doctrine 关系语法和设置的完整文档:http: //docs.doctrine-project.org/en/2.1/reference/association-mapping.html

于 2013-11-02T22:12:17.333 回答