获取没有相关对象原则的实体

时间:2016-06-15 16:30:09

标签: php symfony doctrine-orm

我有以下课程:

class Category {

    /**
    * @ORM\OneToMany(targetEntity="Product", mappedBy="category")
    */
    private $products;

    ...
}

class Product {

    ...

    /**
    * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
    * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
    */
    private $category;

    ...

}

当我尝试从我的数据库中获取一个产品时:

    $query = $doctrineManager->createQuery(
        "
SELECT p FROM AppBundle:Product p
WHERE p.id = :id
        "
    )->setParameter('id', $id);

    $result = $query->getSingleResult();

我不仅获得product,还获得category所有产品(我找到的产品除外)。那么,如何在没有相关模型的情况下仅获取我想要的模型呢?

1 个答案:

答案 0 :(得分:5)

它们只是存根,除非您使用fetch = EAGER,否则您实际上不会获取任何相关的实体信息。

这个答案很好地解释了。

What is the difference between fetch="EAGER" and fetch="LAZY" in doctrine

总之,您无法摆脱关联,但除非您特别要求,否则他们不会加载其他实体,除非您调用数据。所以不用担心。