J'essaie de faire 3 entités (Item, Agree, Disagree) avec les relations suivantes.Doctrine2 ne peut pas faire '2' relations un-à-plusieurs
- Item one-to-many D'accord
- Item one-to-many Pas d'accord
Mais seulement une relation (déclarée plus tard) sur deux a fait.
Voici mes fichiers .yml.
Entities\Item:
type: entity
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToMany:
agrees:
targetEntity: Agree
mappedBy: items
oneToMany:
disagrees:
targetEntity: Disagree
mappedBy: items
Entities\Agree:
type: entity
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
manyToOne:
items:
targetEntity: Item
inversedBy: agrees
Entities\Disagree:
type: entity
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
manyToOne:
items:
targetEntity: Item
inversedBy: disagrees
Et le code ci-dessous est généré automatiquement par Doctrine2 item.php. Comme vous pouvez le voir, il ne contient pas du tout «D'accord».
namespace Entities;
class Item {
private $id;
private $disagrees;
public function __construct() {
$this->disagrees = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getId() {
return $this->id;
}
public function addDisagrees(\Entities\Disagree $disagrees) {
$this->disagrees[] = $disagrees;
}
public function getDisagrees() {
return $this->disagrees;
}
}
Si je commute l'ordre de déclaration ('Pas d'accord' d'abord, puis by'Agree 'comme ci-dessous), item.php ne dispose que' code lié Agree' en ce moment .
Entities\Item:
type: entity
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToMany:
disagrees:
targetEntity: Disagree
mappedBy: items
oneToMany:
agrees:
targetEntity: Agree
mappedBy: items
Quel est le problème avec mon code? Tous les commentaires seront utiles.
L'article, d'accord et en désaccord sont juste des échantillons pour montrer ce problème. En projet réel, d'accord et de désaccord sont des entités totalement différentes. Donc, ne me proposez pas de les fusionner en une entité unifiée. :)