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 個のキーがあります。

ところで、私のエンティティには、関連するすべての subEntities を含む配列コレクションがあり、subEntity のタイプによってインデックス付けされる必要があります。私が言ったように、最初のステップでは問題なく動作しますが、エンティティから arrayCollection を取得すると、すべてのキーが失われます。エンティティを取得した後、エンティティ自体から「var_dump()」を実行しましたが、配列キーも0からNです。

前もってありがとう、乾杯。

解決済み: 私が取得したのは、新しく形成された配列であるように見えます。そのため、私が持っていたキーが失われました。

4

0 に答える 0