【问题标题】:Auto database query from User entity in Symfony2Symfony2中用户实体的自动数据库查询
【发布时间】: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


【解决方案1】:

我也遇到过类似的问题。似乎LazyLoad 不适用于教义中的OneToOne 关系。见this question

【讨论】:

    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多