Undefinierter Index zur Doktrin m: n Relation
Ich habe eine 'Abteilung' und 'newsItem', die im Zusammenhang mit m:n ist. Wenn ich versuche aufzählen über eine Abteilung newsItems, damit Anstoß Abruf aus der db bekomme ich diese Fehlermeldung:
am ErrorHandler ->handle ( '8', 'Undefined index: newsItems', '/.../ufscar_symfony/vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php', '807', array( 'assoc' => array( 'Feldname' =>', newsItems', 'joinTable' => array(), 'targetEntity' => 'UfscarDfmc\OrgBundle\Entity\NewsItem', 'mappedBy' =>', newsItems', 'inversedBy' => null, 'cascade' => array(), 'fetch' =>', 2', 'type' =>', 8', 'isOwningSide' => false, 'sourceEntity' => 'UfscarDfmc\OrgBundle\Entity\Department', 'isCascadeRemove' => false, 'isCascadePersist' => false, 'isCascadeRefresh' => false, 'isCascadeMerge' => false, 'isCascadeDetach' => false ), 'sourceEntity' => Objekt(Abteilung), 'offset' => null, 'limit' => null, 'Kriterien' => array(), 'sourceClass' => Objekt(ClassMetadata) ) )
Was besonders komisch ist, dass es ist ein anderes Verhältnis in der Abteilung, zu einem anderen m:n Entität, die einfach nur funktioniert, und es gibt keinen Unterschied, wie das mapping eingerichtet ist, ich habe 10 mal mindestens.
Den Klassen und den vollständigen stacktrace:
/**
* @ORM\Table()
* @ORM\Entity(repositoryClass="...\OrgBundle\Entity\DepartmentRepository")
*/
class Department
{
/**
* Inverse Side
*
* @ManyToMany(targetEntity="NewsItem", mappedBy="newsItems")
*/
private $newsItems;
public function __construct()
{
$this->newsItems = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get newsItems
*
* @return Doctrine\Common\Collections\Collection
*/
public function getNewsItems()
{
return $this->newsItems;
}
}
class NewsItem
{
/**
* Owning Side
*
* @ManyToMany(targetEntity="Department", inversedBy="newsItems")
* @JoinTable(name="newsItems_departments",
* joinColumns={@JoinColumn(name="newsItem_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="department_id", referencedColumnName="id")}
* )
*/
private $departments;
public function __construct(){
$this->departments = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get departments
*
* @return Doctrine\Common\Collections\Collection
*/
public function getDepartments()
{
return $this->departments;
}
}
public function showAction($slug)
{
$em = $this->getDoctrine()->getEntityManager();
$entity = $em->getRepository('UfscarDfmcOrgBundle:Department')->findOneBySlug($slug);
return array(
'entity' => $entity,
'newsItems' => $entity->getNewsItems(), # enumerating over this gives the error
);
}
am ErrorHandler ->handle ('8', 'Undefined index: newsItems', '/.../vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php', '807', array('assoc' => array('fieldName' =>', newsItems', 'joinTable' => array(), 'targetEntity' => 'UfscarDfmc\OrgBundle\Entity\NewsItem', 'mappedBy' =>', newsItems', 'inversedBy' => null, 'cascade' => array(), 'fetch' => '2', 'type' => '8', 'isOwningSide' => false, 'sourceEntity' => 'UfscarDfmc\OrgBundle\Entity\Department', 'isCascadeRemove' => false, 'isCascadePersist' => false, 'isCascadeRefresh' => false, 'isCascadeMerge' => false, 'isCascadeDetach' => false), 'sourceEntity' => Objekt(Abteilung), 'offset' => null, 'limit' => null, 'Kriterien' => array(), 'sourceClass' => Objekt(ClassMetadata))) in /.../vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php in Zeile 807 bei BasicEntityPersister ->getManyToManyStatement (array('fieldName' =>', newsItems', 'joinTable' => array(), 'targetEntity' => 'UfscarDfmc\OrgBundle\Entity\NewsItem', 'mappedBy' =>', newsItems', 'inversedBy' => null, 'cascade' => array(), 'fetch' => '2', 'type' => '8', 'isOwningSide' => false, 'sourceEntity' => 'UfscarDfmc\OrgBundle\Entity\Department', 'isCascadeRemove' => false, 'isCascadePersist' => false, 'isCascadeRefresh' => false, 'isCascadeMerge' => false, 'isCascadeDetach' => false), Objekt(Abteilung)) in /.../vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php in Zeile 778 bei BasicEntityPersister ->loadManyToManyCollection (array('fieldName' =>', newsItems', 'joinTable' => array(), 'targetEntity' => 'UfscarDfmc\OrgBundle\Entity\NewsItem', 'mappedBy' =>', newsItems', 'inversedBy' => null, 'cascade' => array(), 'fetch' => '2', 'type' => '8', 'isOwningSide' => false, 'sourceEntity' => 'UfscarDfmc\OrgBundle\Entity\Department', 'isCascadeRemove' => false, 'isCascadePersist' => false, 'isCascadeRefresh' => false, 'isCascadeMerge' => false, 'isCascadeDetach' => false), Objekt(Abteilung), Objekt(PersistentCollection)) in /.../vendor/doctrine/lib/Doctrine/ORM/UnitOfWork.php in Zeile 2088 bei UnitOfWork ->loadCollection (object(PersistentCollection)) in /.../vendor/doctrine/lib/Doctrine/ORM/PersistentCollection.php in Zeile 207 bei PersistentCollection ->initialize () in /.../vendor/doctrine/lib/Doctrine/ORM/PersistentCollection.php in Zeile 474 bei PersistentCollection ->count () in Zeile bei count (object(PersistentCollection)) in /.../src/UfscarDfmc/OrgBundle/Controller/DepartmentController.php in Zeile 53 bei DepartmentController ->showAction ('graduacao') in Zeile
InformationsquelleAutor der Frage Jan | 2011-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich richtig bin...
Ihre mappedBy in der Klasse-Abteilung sollte die Eigenschaft der NewsItem-Elements mit der Klasse, in deinem Fall Abteilungen statt newsItems.
InformationsquelleAutor der Antwort pderaaij
Bin ich mit den gleichen Schwierigkeiten, und die Antworten auf StackOverflow beim richtigen dont tief genug geht. Ich fand in einem der Lehre jira-issues:
Wenn Sie
dann wird es Ihnen sagen, was das problem ist.
InformationsquelleAutor der Antwort Bae
Sind Sie wahrscheinlich, etwas zu verpassen in Ihrer Funktion Notationen.. haben Sie einen Blick auf diese:
http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#many-to-many-bidirectional
Scheint es, dass Sie fehlen @JoinTable - Schreibweise- vielleicht versuchen, Sie zu invertieren Owning und Inverse Seite?
InformationsquelleAutor der Antwort geezmo