1

我正在使用 Doctrine2 开发 Symfony2。我的问题是,当我使用键保存数组集合时,在检索它们的那一刻,键是通常的 0 到 n 数组索引键,而不是我放入的键。

这是我的实体:

 /**
 * @var array
 * @ORM\OneToMany(targetEntity="SubEntity", mappedBy="idEntity", cascade={"persist"}, indexBy="idSubEntity")
 */
protected $arraySubEntities;

/**
* @param array() $subEntitiesArray     Simple array with "SubEntity" objects
*
*/
public function __construct($subEntitiesArray)
{
    $this->arraySubEntities = new ArrayCollection;

    foreach ($subEntitiesArray as $subEntity){
        $subEntity->setIdEntity($this);
        $this->addArraySubEntities($subEntity->getIdSubEntityType()->getId(), $subEntity);
    }


public function addArraySubEntities($key, \project\Entity\SubEntityBD $subEntity)
{
    $this->arraySubEntities->set($key, $subEntity);

    return $this;
}

public function getArraySubEntities()
{
    return $this->arraySubEntities;
}

这是“保存”部分:

$subEntityTypes = $this->em->getRepository('projectBundle:SubEntityType')->findAll();

$subEntitiesArray = array();
foreach ($subEntityTypes as $subEntityType) {
    $subEntitiesArray[] = new SubEntity($subEntityType);
}

$entity = new Entity($subEntitiesArray);
var_dump($entity);

最后的 'var_dump()' 显示我的实体具有正确的键、正确的类,一切都是正确的。

问题:

$entity = $this->em->getRepository('projectBundle:Entity')->find($idEntity);

$subEntitiesArray = $entity->getArraySubEntities();
var_dump($subEntitiesArray);

最后一个 'var_dump()' 显示相同的数组,但有 0 到 N 个键。

顺便说一句,我希望我的实体有一个数组集合,其中包含与其相关的所有子实体,并按它们所在的子实体的类型进行索引。正如我所说,它在第一步工作正常,但是当我从实体中检索 arrayCollection 时,它丢失了所有的键。我在检索它之后从它自己的实体中做了一个'var_dump()',并且数组键也是0到N。

在此先感谢,干杯。

已解决:看起来我检索的只是一个新形成的数组,这就是我丢失的密钥的原因。

4

0 回答 0