【发布时间】:2015-08-08 15:29:45
【问题描述】:
在 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 查询。首先 Symfony 下载有关已登录用户的行,然后下载有关“爱”他的用户的所有信息,即使这些信息是无用的。我只有在用户发送消息时才需要它。
有什么方法可以更好地编写/构建数据库吗?如何控制 Symfony2 中的自动生成查询?
【问题讨论】:
-
您能粘贴这些查询吗?
-
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 = ?
标签: php mysql symfony doctrine-orm