Red*_*ile 3 php mysql symfony doctrine-orm
我有一个ManyToMany关联字段,我正处于这样一种情况,我只是试图获得所有的ID而不保护字段中的任何子实体.
我知道在我访问该字段时会有一个查询来获取实体引用,这很好/期望.但是我需要遍历ID,但我不知道如何在不做的情况下获取它们
$ids = [];
foreach($mainEntity->getSubEntities() as $subentity) {
$ids[] = $subentity->getId();
}
Run Code Online (Sandbox Code Playgroud)
这也似乎自动地对子实体进行水合,因为foreach循环而假设.这会导致大量不必要的查询并影响页面加载时间.
我也有标记的subentity字段EXTRALAZY.
/**
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="User", fetch="EXTRA_LAZY")
* @ORM\JoinTable(name="user_friends")
*/
protected $friends;
Run Code Online (Sandbox Code Playgroud)
由于getKeys()仅返回PersistentCollection的顺序索引,因此我发现这个oneliner作为解决方案:
$myCollectionIds = $myCollection->map(function($obj){return $obj->getId();})->getValues();
Run Code Online (Sandbox Code Playgroud)
在IN上下文中顺利运行.
| 归档时间: |
|
| 查看次数: |
4150 次 |
| 最近记录: |