gpt4 book ai didi

php - 使用 Doctrine 仅从 ManyToMany 获取 ID 列表

转载 作者:可可西里 更新时间:2023-11-01 07:49:36 25 4
gpt4 key购买 nike

我有一个 ManyToMany 关联字段,我处于这样一种情况,我只是想获取所有 ID,而不合并该字段中的任何子实体。

我知道当我访问该字段时会有一个查询来获取实体引用,这很好/预料之中。但我需要遍历 ID,但我不太清楚如何在不执行的情况下获取它们

$ids = [];
foreach($mainEntity->getSubEntities() as $subentity) {
$ids[] = $subentity->getId();
}

这似乎也自动水合物子实体,我假设是因为 foreach 循环。这会导致大量不必要的查询并影响页面加载时间。

我还有标有 EXTRALAZY 的子实体字段。

/**
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="User", fetch="EXTRA_LAZY")
* @ORM\JoinTable(name="user_friends")
*/
protected $friends;

最佳答案

由于 getKeys() 只返回 PersistentCollection 的顺序索引,我找到了这个 oneliner 作为解决方案:

$myCollectionIds = $myCollection->map(function($obj){return $obj->getId();})->getValues();

IN 上下文中顺利工作。

关于php - 使用 Doctrine 仅从 ManyToMany 获取 ID 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31400194/

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