Добрый день.
У меня есть базовая сущность -
Place и 2 ее дочерние -
InPlace и
OutPlace
Соответственно
InPlace и
OutPlace наследуются от
Place.
Есть также класс геообъекта -
Geoclass Geo{
/**
* @ORM\ManyToOne(targetEntity="Base\Place", inversedBy="geo")
* @ORM\JoinColumn(name="place_id", referencedColumnName="geo_id", onDelete="CASCADE")
*/
protected $place;
}
Как вы видите, в нем могут быть как
InPlace так и
OutPlace, и именно поэтому я привязываю с помощью базового класса
Place
Собственно вопрос - делаю я выборку из БД, например, так (репозиторий Geo)
$qb = $em->createQueryBuilder('geo');
$qb
->select('geo')
->leftJoin('geo.place', 'place')
// поля photo есть только в дочерних классах. В Place их нет
->leftJoin('place.photo', 'photo')
;
и получаю соответсвующую ошибку о том, что в классе
Place нет поля
photo (оно и правильно, ведь photo только в дочерних классах).
Как мне сделать так, чтобы при выборке подцеплялся не базовый класс, а дочерний класс, который привязан к данному
Geo?
Копал в сторону
resolve_target_entity, но там привязка идет одного класса к одному