Я застрял в получении отношения ManyToMany. У меня есть два объекта: Offer
и OfferType
. Я определил отношение ManyToMany только на OfferEntity
, и похоже, что предложения по сохранению с несколькими OfferType
отлично работают в базе данных. Я вижу правильную таблицу соединения.Получить отношение объектов ManyToMany
OfferEntity.php
/**
* Offer Entity
*
* @ORM\Table(name="offer")
* @ORM\Entity(repositoryClass="ProjectBundle\Repository\OfferRepository")
*/
class Offer
{
/**
* @Assert\Count(
* min = "1",
* minMessage = "You must specify at least one offer type."
*)
* @ORM\ManyToMany(targetEntity="OfferType")
*/
private $types;
public function __construct()
{
$this->types = new ArrayCollection();
}
/**
* @return ArrayCollection
*/
public function getTypes()
{
return $this->types;
}
(...)
Прямо сейчас, я хотел бы получить все types
назначенный offer
. Я пробовал так:
// $offer is an Entity
$query = $em->createQueryBuilder()
->select('offer.types')
->from('ProjectBundle:Offer', 'offer')
->where('offer = :offer')
->setParameters([
'offer' => $offer
]);
К сожалению, я получаю сообщение об ошибке:
[2/2] QueryException: [Semantical Error] line 0, col 13 near 'types FROM ProjectBundle:Offer': Error: Invalid PathExpression. Must be a **StateFieldPathExpression**.
[1/2] QueryException: SELECT offer.types FROM ProjectBundle:Offer offer WHERE offer = :offer
Основываясь на StackOverflow ответы на подобные вопросы попробовал также использовать IDENTITY()
:
// $offer is an Entity
$query = $em->createQueryBuilder()
->select('IDENTITY(offer.types)')
->from('ProjectBundle:Offer', 'offer')
->where('offer = :offer')
->setParameters([
'offer' => $offer
]);
Но тогда у меня есть :
[2/2] QueryException: [Semantical Error] line 0, col 22 near 'types) FROM ProjectBundle:Offer': Error: Invalid PathExpression. Must be a SingleValuedAssociationField.
[1/2] QueryException: SELECT IDENTITY(offer.types) FROM ProjectBundle:Offer offer WHERE offer = :offer
Я бы очень признателен за любые советы по поводу получения отношения ManyToMany, может быть, мой подход к этому неверен?