gpt4 book ai didi

join - Doctrine 2 中的自动 JOIN 生成

转载 作者:行者123 更新时间:2023-12-04 05:46:10 25 4
gpt4 key购买 nike

Doctrine 2 是否支持自动 JOIN 生成?也就是说,假设我有一个与一些产品实体相关联的卖方实体,每个实体都有一个类别,做类似的事情

$sellers = $entityManager->getRepository('Foo\Bar\Seller')->findBy(array('country' => 'US'), array('populate' => array('Product', 'Product.Category')));
foreach ($sellers as $seller) {
doStuffWith($seller->product->category);
}

整个过程只需要一个查询,因为 Doctrine 会将产品和类别表连接到卖家表,并使用结果来预填充关联。这样的事情可能吗?

最佳答案

您有两种方法可以自动执行 JOIN:

  • 使用急切获取
  • 使用 DQL

  • Eager fetching 意味着无论何时获取主实体,Doctrine 2 都会自动获取任何标记为“eager”的关系。这是通过使用 fetch 来完成的。映射中的属性(见 Manual: ManyToOne)
    使用 DQL,您需要编写一个查询来获取主实体和相关实体/实体: SELECT m, r FROM My\MainEntity m LEFT JOIN m.relatedEntity rEager fetch 与 DQL 的优势在于,通过 Eager fetch,您将基本上自动获得该功能。但是,急切获取的缺点是,如果您实际上不使用相关实体,则可能会导致性能下降。使用 DQL,您始终可以控制获取的内容和时间。

    关于join - Doctrine 2 中的自动 JOIN 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654901/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com