主义生成OneToMany关系

时间:2011-12-07 11:04:18

标签: symfony doctrine-orm left-join

修改

我们采用以下模型:

enter image description here

使用命令doctrine:mapping:import:

生成以下实体
class Toto
{
    /**
     * @var integer $idtoto
     *
     * @ORM\Column(name="idtoto", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idtoto;



    /**
     * Get idtoto
     *
     * @return integer 
     */
    public function getIdtoto()
    {
        return $this->idtoto;
    }
}

class Tata
{
    /**
     * @var integer $idtata
     *
     * @ORM\Column(name="idtata", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idtata;

    /**
     * @var Toto
     *
     * @ORM\ManyToOne(targetEntity="Toto")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="idtoto", referencedColumnName="idtoto")
     * })
     */
    private $idtoto;



    /**
     * Get idtata
     *
     * @return integer 
     */
    public function getIdtata()
    {
        return $this->idtata;
    }

    /**
     * Set idtoto
     *
     * @param Creatis\SaisieBundle\Entity\Toto $idtoto
     */
    public function setIdtoto(\Creatis\SaisieBundle\Entity\Toto $idtoto)
    {
        $this->idtoto = $idtoto;
    }

    /**
     * Get idtoto
     *
     * @return Creatis\SaisieBundle\Entity\Toto 
     */
    public function getIdtoto()
    {
        return $this->idtoto;
    }
}

为什么Toto类中的OneToMany关系没有生成(必须手工输入):

/**
 * @ORM\OneToMany(targetEntity="Tata", mappedBy="idToto")
 */
private $tatas;

是否可以选择放入命令行?

2 个答案:

答案 0 :(得分:1)

在leftJoin中,您只需使用Tata类中定义的关系属性的名称。第二个参数仅定义您可以在语句中使用的键。如果你们的关系是正确的,那么教义会自动加入:

class TataRepository extends EntityRepository{
  public function getRelation(){
    $qb = $this->createQueryBuilder('tata')
      ->leftJoin('tata.idtoto', 'toto');
    return $qb->getQuery()->getResult();
  }
}

如果您不想使用外键加入其他字段,则必须在leftJoin中添加一个thrid参数来执行匹配,例如toto.field1 = tata.field2

答案 1 :(得分:0)

这是Doctrine 2的限制。它只解决了大约70-80%的必要映射信息。请查看此http://doctrine-orm.readthedocs.org/en/2.0.x/reference/tools.html#convert-mapping-information