教义如何处理多次出现的关联

时间:2020-07-27 20:18:16

标签: php doctrine

我有一个问题,当一个映射的实体对于几个请求的实体是公共的时,Doctrine处理 OneToOne 关联的方式。

假设以下Route实体。路由实体与City实体有两个 OneToOne 关联:

class Route{
    
    //... more code     

    /**
     * @var City $origin
     * @ORM\OneToOne(targetEntity="City")
     * @ORM\JoinColumn(name="origin", referencedColumnName="postalCode")
     */
    private $origin;

    /**
     * @var City $destination
     * @ORM\OneToOne(targetEntity="City")
     * @ORM\JoinColumn(name="destination", referencedColumnName="postalCode")
     */
    private $destination;

    //... even more code     
}

如果我从数据库请求 n Route个实体,则可以在多个City中引用一个Routes。教义是如何处理的:

  1. City实体每次出现时都会从数据库中加载到内存中一次,并在需要时重新使用。
  2. 每次需要从数据库中重新加载City实体。
  3. 我没想到的另一种可能性。

子问题

如果我要显示很多(6000条以上)路线,那么优化City实体的负载的最佳方法是什么?

    为两个 OneToOne 映射
  • 启用 EAGER 加载(我注意到性能有所提高,因为我认为它限制了与数据库的事务,因此在执行时可以更快地执行涉及显示数据)
  • 我不知道的其他事情吗?

0 个答案:

没有答案
相关问题