2014-09-12 48 views
0

我使用Symfony2的建立我的web應用程序,但我想不出爲什麼一個查詢將不會從兩個表中,只有一個返回結果。在我的結果中,我只收回SupplierPayment表中的值。結果,在Symfony2的一對多關聯不工作

我有1個表看起來像這樣:

SupplierPayment

id | 
------ 
1 | 

我還有一個表,看起來像這樣:

SettlementReport

id | SupplierPayment 
------------------------------ 
1 | 1 

SupplierPayment is a manyToOne association back to the SupplierPayment table. 

這裏是我的每個相應的實體關聯:

SupplierPayment實體

/** 
* @ORM\OneToMany(targetEntity="WIC\SettlementBundle\Entity\SettlementReport", mappedBy="supplierPayment", fetch="EXTRA_LAZY") 
*/ 
protected $settlementReport; 

SettlementReport實體

/** 
* @ORM\ManyToOne(targetEntity="WIC\SupplierBundle\Entity\SupplierPayment", inversedBy="supplierReport") 
* @ORM\JoinColumn(name="supplierPayment_id", referencedColumnName="id", nullable=true) 
*/ 
protected $supplierPayment; 

我想它從SupplierPayment與返回值結算報告的結果。

出於某種原因,當使用原則使用查詢我的SupplierPayment表 - >找到(1) 它不包括從SettlementReport表中的結果。這是爲什麼?

感謝您的幫助!

回答

0

的inversedBy聲明需要匹配到相關實體 變化inversedBy = 「supplierReport」 的一對多propritie到inversedBy = 「settlementReport」

/** 
* @ORM\ManyToOne(targetEntity="WIC\SupplierBundle\Entity\SupplierPayment", inversedBy="settlementReport") 
* @ORM\JoinColumn(name="supplierPayment_id", referencedColumnName="id", nullable=true) 
*/ 
protected $supplierPayment; 
1
/** 
* @ORM\ManyToOne(targetEntity="WIC\SupplierBundle\Entity\SupplierPayment", inversedBy="supplierReport") 
* @ORM\JoinColumn(name="supplierPayment_id", referencedColumnName="id", nullable=true) 
*/ 
protected $supplierPayment; 

修復:

/** 
* @ORM\ManyToOne(targetEntity="WIC\SupplierBundle\Entity\SupplierPayment", inversedBy="settlementReport") 
* @ORM\JoinColumn(name="supplierPayment_id", referencedColumnName="id", nullable=true) 
*/ 
protected $supplierPayment; 

我建議你使用複數名稱爲保存許多數值屬性(是的ArrayCollection)

使用:「$ settlementReports」而不是「$ settlementReport」