2011-12-07 69 views
0

編輯主義一代一對多關係

讓我們採取以下模式:

enter image description here

下列實體與命令主義產生:映射:進口:

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 NOT One產生的關係OneToMany(必須手工輸入):

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

有沒有可以放在命令行中的選項?

+2

您已閱讀所有文檔?你的實體是什麼樣的?爲了幫助你,我們需要更多信息。 – Flukey

+0

更確切地說,我們需要知道如何命名類之間的關係。 – greg0ire

+0

我編輯的帖子更精確 – Yoot

回答

1

在左上角,您只需使用您在Tata類中定義的關係屬性的名稱即可。第二個參數只定義了您可以在語句中使用的鍵。如果你的關係是正確的,教條請問自動加入:

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

如果你不想與外鍵,但一些其他領域的加入,你必須添加一個THRID參數leftJoin這不匹配,如toto.field1 = tata.field2

+0

我再次編輯帖子,因爲左連接的東西不是真正的問題 – Yoot

+0

啊,好的,你需要一個雙向關係,現在我明白了。 – Sgoettschkes