当我检索我的ArrayCollection时,缺少密钥

时间:2015-04-29 11:48:17

标签: php symfony doctrine-orm arraycollection array-key

我正在使用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个键。

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

提前致谢, 欢呼声。

解决:看起来我检索的只是一个新形成的数组,这就是为什么我的钥匙丢失了。

0 个答案:

没有答案