2014-01-13 14 views
7

Ich habe ein Symfony 2.4.x Projekt.Symfony2 und Doctrine - Undefinierter Index

Dort habe ich zwei Entitäten, die zusammen zugeordnet sind: Konferenz und Papier.

Jede Konferenz hat Papiere und mit einer bestimmten Konferenz möchte ich die Anzahl der Papiere erhalten.

Dafür in meiner Konferenz Einheit, die ich habe:

/** 
* @ORM\OneToMany(targetEntity="Paper", mappedBy="conference") 
*/ 
protected $papers; 

In der Entität Papier Ich habe:

/** 
* @ORM\ManyToOne(targetEntity="Conference", inversedBy="papers") 
* @ORM\JoinColumn(name="conference_id", referencedColumnName="id") 
*/ 
protected $conference; 

Als ich dieses Projekt auf Symfony2.0 hatte, alles gut geklappt, aber jetzt wanderte ich es in Symfony 2.4.x und ich erhalte die folgende Fehlermeldung, wenn versucht zu tun:

count($conf->getPapers()); // In the controller 
{{ conf.papers | length }} // In the twig template 

Fehler:

ContextErrorException: Notice: Undefined index: hash_key in /var/www/git/conference2.0-v2.4/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php line 121 

EDIT: Hier sind die vollen Klassen der beiden Entitäten in Pastebin:

EDIT 2: Hier sind einige Nachrichten, die ich gefunden habe, indem ich versucht habe, das Problem zu lösen. Eine andere Klasse ist dort beteiligt: ​​Einreichung.

Hier ist der Code: http://pastebin.com/bkdRtjdq

In der Klasse Submission, habe ich den Primärschlüssel, HASH_KEY und nicht die ID ist.

+0

Können Sie die vollständigen Klassen von Papier und Konferenz bereitstellen? – Flask

+0

@Flask, habe ich den vollen Code in meiner Frage mit Pastebin hinzugefügt. Danke für Ihre Hilfe. –

+0

Haben Sie das gelöst? – Craig

Antwort

0

Gibt es Fälle, in denen Papiere 0 sind? Die Variable conf.papers kann null sein, und Sie müssen zuerst prüfen, ob sie null ist, bevor Sie zählen. {% if conf.papers ist leer%} ... {% endif%}

0

Ich denke, es wäre durch den Plural Fall verursacht werden könnten: Papier s

Try this:

/** 
* @ORM\OneToMany(targetEntity="Paper", mappedBy="conference") 
*/ 
protected $paper; 
1

hatte ich den gleichen Fehler, wenn ich versuche, in ManyToMany realtionship mit ObjectManager Einheiten zu erhalten:

$repository->findBy(
    array('members' = > $user) 
); 

war meine Abhilfe find Methode in Repository mit DQL zu schreiben:

public function findByMember(User $member) 
{ 
    $qb = $this->createQueryBuilder('g'); 

    $qb->innerJoin('g.members', 'wg') 
     ->where($qb->expr()->eq('wg', ':member')) 
     ->setParameter('member', $member); 

    return $qb->getQuery()->getResult(); 
} 

Vielleicht wird es sinnvoll sein, für jemanden.