ho un'entità chiamata evento che haDoctrine2: associazioni entità dinamica, molti targetEntity mappato da un campo
- un campo "associatedEntity" che contiene il nome della classe di un'altra entità dello Bundle
- un campo " targetId "di quella specifica entità" associataEntity "
Vorrei ora accedere a questa entità di destinazione all'interno della mia Event-Entity in qualche modo, ma ora sono sicuro di come farlo. Mi piacerebbe accedere alle diverse entità di destinazione in un modello ramoscello usando qualcosa come
{% if event.getClassName() == "User" %}
{{ if event.getUser().getName() }}
{% endif %}
Edit: Giusto per essere chiari, l'unica cosa Sono interessato finora è come creare la relazione in modo corretto. Al di fuori di un mondo ORM probabilmente useresti una dichiarazione di join per questo. È come se avessi molte Entità di destinazione mappate da un campo.
im Finora utilizzando il repository di entità e DI per caricare le entità associate, ma trovo che brutto sapere v'è una dichiarazione JOIN che ho potuto utilizzare:
public function getUpcomingEvents(){
$query = $this->createQueryBuilder('E')
->where('E.resolved = false')
->orderBy('E.notify_date', 'ASC')
->setMaxResults($limit);
$res = $query->getQuery()->getResult();
$res = $this->attachAssociatedObjects($res);
return $res;
}
public function attachAssociatedObjects($res){
foreach ($res as $key => $entity) {
$assocObject = $this->getEntityManager()->getReference('My\Bundle\Entity\\'.$entity->getClassName(), $entity->getTargetId());
$res[$key]->setAssociatedObject($assocObject);
}
return $res;
}
Stai cercando di fare in modo che Event.target punti a diverse classi target? Se è così, potrebbe essere un po 'impegnativo. – Cerad
Sì, questo è quello che mi piacerebbe fare! – worenga