Получить ссылку на тип сущности JOINED

Я пытаюсь понять, как getReference в классе, который имеет подклассы (в том смысле, что тип наследования установлен в JOINED для родительского класса). Я заметил, что мое приложение выполняет около 70 запросов к БД при каждой загрузке страницы, и проследил эту проблему до класса EntityManager. Виновный код ниже (это в getReference функция, строка 516 в моей версии, в классе Doctrine \ ORM \ EntityManager)

if ($class->subClasses) {
return $this->find($entityName, $sortedId);
}

Почему Доктрина делает это? Есть ли способ обойти это? Моя сущность, на которую я пытаюсь получить ссылку, находится ниже …

/**
* Advert
*
* @ORM\Table(name="main_advert")
* @ORM\Entity(repositoryClass="API\CoreEntityBundle\Repository\AdvertRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discriminator", type="integer")
* @ORM\DiscriminatorMap({
*      "0" = "Advert",
*      "1" = "PropertyAdvert"* })
*/
class Advert
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

//Other stuff...
}

И код, который я пытался получить ссылку, это —

$advert = $this->get('doctrine.orm.default_entity_manager')
->getReference('APICoreEntityBundle:Advert', array('id' => $id));

Единственный способ получить простую ссылку на объект без вызова БД — это создать setId() функция на Advert класс, но я знаю, что это не правильный путь.

Любая помощь будет оценена!

РЕДАКТИРОВАТЬ — Хорошо, так что я считать Я нашел решение в getParialReference функция, чуть ниже getReference функция в классе EntityManager. Мне все еще интересно, почему менеджер должен сделать find если у сущности есть дети?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector