2015-08-08 46 views
0

在Symfony2中,我有一個用戶實體這些列:自動數據庫查詢中的Symfony2

* 
* @ORM\OneToOne(targetEntity="User", inversedBy="lovername") 
* @ORM\JoinColumn(name="lover", referencedColumnName="id", onDelete = "SET NULL") 
*/ 
private $lover; 


/** 
* @ORM\OneToOne(targetEntity="User", mappedBy="lover", cascade={"persist"}, fetch="EXTRA_LAZY") 
**/ 
private $lovername; 

該項目是一個交友網站,用戶可以在其中發送消息只有一個用戶,他/她選擇了。列lover包含他/她選擇與之通話的用戶的ID。

它工作正常,但它會生成一個額外的SQL查詢。 First Symfony首先下載關於登錄用戶的信息,然後下載關於用戶的所有關於他的信息,即使這些信息是無用的。我只在用戶發送消息時才需要它。

這是一種更好地編寫/構建數據庫的方法嗎?如何控制Symfony2中的自動生成查詢?

+0

您可以粘貼這些查詢嗎? –

+0

SELECT t0.id AS id1,t0.username [...] FROM users t0 LEFT JOIN users [...] WHERE t0.id =? 第二個查詢: SELECT t0.id AS id1,t0.username [...] FROM users t0 LEFT JOIN users [...] WHERE t0.lover =? – Bartosz

回答

0

我也遇到過類似的問題。似乎LazyLoad在原則中不能正常工作OneToOne關係。請參閱this question