Ich blieb beim Erhalten ManyToMany Beziehung. Ich habe zwei Einheiten Offer
und OfferType
. Ich definierte ManyToMany-Beziehung nur auf OfferEntity
und es sieht aus wie das Speichern von Angeboten mit mehreren OfferType
funktioniert gut in der Datenbank sehe ich korrekte Verbindungstabelle.Holen Sie sich die Beziehung von ManyToMany Entities
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;
}
(...)
Gerade jetzt, würde Ich mag alle types
zum offer
zugewiesen bekommen. Ich habe versucht, es wie folgt aus:
// $offer is an Entity
$query = $em->createQueryBuilder()
->select('offer.types')
->from('ProjectBundle:Offer', 'offer')
->where('offer = :offer')
->setParameters([
'offer' => $offer
]);
Leider ich immer Fehler:
[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
Basierend auf Stackoverflow Antworten auf ähnliche Fragen versucht auch IDENTITY()
zu verwenden:
// $offer is an Entity
$query = $em->createQueryBuilder()
->select('IDENTITY(offer.types)')
->from('ProjectBundle:Offer', 'offer')
->where('offer = :offer')
->setParameters([
'offer' => $offer
]);
Aber dann habe ich :
[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
Ich würde wirklich alle Hinweise über ManyToMany Beziehung schätzen, vielleicht ist mein Ansatz dafür falsch?