Я работаю над Symfony2, используя Doctrine2. Моя проблема в том, что когда я сохраняю коллекцию массивов с ключами, в момент их получения ключи представляют собой обычные ключи индекса массива от 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.
Заранее спасибо,
Приветствия.
РЕШЕНО: похоже, что я получаю только что сформированный массив, поэтому ключи, которые у меня были, потеряны.
Задача ещё не решена.
Других решений пока нет …