Symfony и Doctrine. Как в выборке связать 2 разные дочерние сущности одного класса?

Добрый день.
У меня есть базовая сущность - Place и 2 ее дочерние - InPlace и OutPlace
Соответственно InPlace и OutPlace наследуются от Place.
Есть также класс геообъекта - Geo
class 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, но там привязка идет одного класса к одному
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы