У меня есть к таблицамSymfony2 OneToMany не использует пользовательский репозиторий класса
preset_item ID
и
preset_item_element preset_item_id -> ссылка на prese_item элементом ELEMENT_TYPE ELEMENT_ID
в PresetItemElement лица есть:
/**
* @var \GGG\ManagerBundle\Entity\PresetItem
*
* @ORM\ManyToOne(targetEntity="GGG\ManagerBundle\Entity\PresetItem", inversedBy="elements")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="preset_item_id", referencedColumnName="id")
* })
*/
private $presetItem;
и PresetItem
/**
* @ORM\OneToMany(targetEntity="PresetItemElement", mappedBy="presetItem")
*/
private $elements;
public function getElements()
{
return $this->elements;
}
И заданный элемент имеет пользовательский Repository класс:
/**
* PresetItem
*
* @ORM\Table(name="preset_item")
* @ORM\Entity(repositoryClass="GGG\ManagerBundle\Entity\PresetItemRepository")
*/
class PresetItem
это выглядит следующим образом:
<?php
namespace GGG\ManagerBundle\Entity;
use Doctrine\ORM\EntityRepository;
use Doctrine\DBAL\LockMode;
class PresetItemElementRepository extends EntityRepository
{
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) {
return $this->decorate(parent::findBy($criteria, $orderBy, $limit, $offset));
}
public function find($id, $lockMode = LockMode::NONE, $lockVersion = null) {
return $this->decorateElement(parent::find($id, $lockMode, $lockVersion));
}
public function findOneBy(array $criteria, array $orderBy = null) {
return $this->decorateElement(parent::findOneBy($criteria, $orderBy));
}
private function decorateElement($element) {
$object = $this->getEntityManager()
->getRepository(
'GGGManagerBundle:'.$element
->getPresetItemElementType()
->getRepresentationObject()
)->findOneBy(array('id' => $element->getElementId()));
$element->setObject($object);
}
private function decorate($elements) {
foreach($elements as $element) {
$this->decorateElement($element);
}
return $elements;
}
}
Так что я украшающие каждый PresetItemElement с некоторые дополнительные данные
и это работа, когда я, получаю один объект PresetItemElement, но когда я получаю PresetItem и попытаться итерацию getElements()
$entity = $em->getRepository('GGGManagerBundle:PresetItem')->find($id);
foreach($entity->getElements() as $a) {
var_dump($a->getObject());
}
я нуль здесь, похоже, обычай PresetItemElementRepository не был выполнен
Что я делаю неправильно?