【问题标题】:Map ternary relationship映射三元关系
【发布时间】:2013-11-03 06:12:17
【问题描述】:

我尝试映射三元关系。 ER模型是下一个:

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

所以,我认为,映射关系 (alumno_relacion_responsable) 并从其他表中定义双向单向多点。

我的实体是:

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
}

所以,在relationchip实体中:

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 说(在加载脚本上):

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

关于我的错误有什么想法吗?

【问题讨论】:

    标签: symfony doctrine-orm


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      • 2016-09-01
      • 2013-08-03
      • 1970-01-01
      相关资源
      最近更新 更多