ManyToMany関係を取得することに固執しました。私は2つのエンティティ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;
}
(...)
は今のところ、私はoffer
に割り当てられたすべてのtypes
を取得したいと思います。
// $offer is an Entity
$query = $em->createQueryBuilder()
->select('offer.types')
->from('ProjectBundle:Offer', 'offer')
->where('offer = :offer')
->setParameters([
'offer' => $offer
]);
は、残念ながら、私はエラーを取得:同様の質問のための答えはIDENTITY()
を使用することも、それを試してみましたのStackOverflowに基づいて
[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
:私はこのようにそれを試してみました
// $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関係を取得することに関するヒントは本当にありがたいです。私のアプローチは間違っていますか?