2013-05-27 22 views
0

我有兩個表之間的關係通過第三,額外的行(或多個)想在這個question主義inversedBy字段包含PersistentCollection

/** @Entity 
*/ 
class Illness { 


/** @Id @GeneratedValue @Column(type="integer") */ 
private $illness_id; 

/** @Column(type="string") */ 
private $name; 

/** @OneToMany(targetEntity="Illness_Symptom_Association", mappedBy="Illness") */ 
private $symptAssoc; 

public function __construct() 
{ 
    $this->symptAssoc = new \Doctrine\Common\Collections\ArrayCollection(); 

} 

public function setName($val) 
{ 
    $this->name = $val; 
} 

public function getName() 
{ 
    return $this->name; 
} 



public function getSymptAssoc() 
{ 
    return $this->symptAssoc; 
} 

} 

加入表第三PARAM S(類似優先級)

/** 
* @Entity 
*/ 
class Illness_Symptom_Association { 

protected $illness_id; 

/** 
* @Id() 
* @ManyToOne(targetEntity="Illness", inversedBy="symptAssoc") 
* @JoinColumn(name="illness_id", referencedColumnName="illness_id", nullable=false) 
*/ 
protected $illness; 

/** 
* @Id() 
* @ManyToOne(targetEntity="Symptom", inversedBy="symptAssoc") 
* @JoinColumn(name="symptom_id", referencedColumnName="symptom_id") 
* */ 
protected $symptom; 

/** @Column(type="integer") */ 
protected $s; 

public function setIllness(Illness $illness) 
{ 
    $this->illness = $illness; 
} 

/** 
* 
* @return Illness 
*/ 
public function getIllness() 
{ 
    return $this->illness; 
} 

public function setSymptom(Symptom $sympt) 
{ 
    return $this->symptom = $sympt; 
} 

public function getSymptom() 
{ 
    return $this->symptom; 
} 

public function setS($s) 
{ 
    $this->s = $s; 
} 

public function getS() 
{ 
    return $this->s; 
    } 

} 

末實體症狀:

/** 
* @Entity 
*/ 
class Symptom { 

/** @Id @GeneratedValue @Column(type="integer") */ 
protected $symptom_id; 

/** @Column(type="string", unique=true) */ 
protected $name; 

/** @OneToMany(targetEntity="Illness_Symptom_Association", mappedBy="symptom") */ 
protected $symptAssoc; 

public function setName($name) 
{ 
    $this->name = $name; 
} 

public function getName($name) 
{ 
    return $this->name; 
} 

} 

$illness = $em->getRepository('Entity\Illness')->find($id); 
$illness->getSymptAssoc(); 

回報PersistentCollection oject。

我怎樣才能得到症狀列表s參數從連接表嗎?

回答

1

PersistentCollection是Collection(在這種情況下是Symptom對象的)。它已經是一個症狀列表。

可以遍歷它(就像陣列),訪問它的元素(其是在這種情況下,症狀的對象),或將其轉換爲一個數組:的

$illness->getSymptAssoc()->toArray(); 
+0

症狀propertye ** ** Illness_Symptom_Association內部symptAssoc集合返回** DoctrineORMModule \ Proxy \ __ CG __ \ Application \ Entity \ Symptom **而不是**症狀**映射器。這可能是什麼原因? – yurisnk

+0

這是生成的用於延遲加載實體的症狀的子類;您可以像使用Symptom對象一樣使用它。 – arnaud576875