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

pac*_*ion 5 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;

    ...

}
Run Code Online (Sandbox Code Playgroud)

当我尝试从我的数据库中获取一个产品时,如下所示:

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

    $result = $query->getSingleResult();
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*ard 6

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

这个答案很好地解释了它.

在学说中fetch ="EAGER"和fetch ="LAZY"之间有什么区别?

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