Bonjour,
je travaille sur Symfony2 et je commence (avec des amis) à développer un projet qui nous servira par la suite et on désire faire un système d'amis.
Comme j'utilise FOSUB, j'ai défini un user dans lequel je mets une propriété "friends" et qui met un ManyToMany sur l'user.
<?php
class User extends BaseUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Answer42\Bundles\UserBundle\Entity\User")
*/
private $friends;
public function __construct()
{
parent::__construct();
// Si vous aviez déjà un constructeur, rajoutez juste cette ligne :
$this->friends = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
*
* @param \Answer42\Bundles\UserBundle\Entity\User $user l'utilisateur à
* mettre en ami
* @return \Answer42\Bundles\UserBundle\Entity\User reférence sur l'objet
* courant pour chaînage des fonctions
*/
public function addFriend(\Answer42\Bundles\UserBundle\Entity\User $user){
$this->friends->add($user);
return $this;
}
/**
*
* @param \Answer42\Bundles\UserBundle\Entity\User $user l'utilisateur à
* enlever des amis
* @return \Answer42\Bundles\UserBundle\Entity\User reférence sur l'objet
* courant pour chaînage des fonctions
*/
public function removeFriend(\Answer42\Bundles\UserBundle\Entity\User $user){
$this->friends->removeElement($user);
return $this;
}
/**
* @return \Doctrine\Common\Collections\ArrayCollection
*/
public function getFriends() {
return $this->friends;
}
}
Puis je mets à jour mon schéma doctrine, et par curiosité je jette un coup d'oeil à ma bdd, en faisans un SHOWCOLUMNSFROMuser_user
et là j'obtiens :
field = user_id
type = int
null = no
key = pri
default = null
extra =
mais rien d'autre : je n'ai aucune trace de clef étrangère etc. Ce qui rend impossible de faire quoi que ce soit.
Comment puis-je faire? Est-ce un bug de doctrine ou bien une mauvaise config de ma part?
Peut-être dois-tu passer par une relation User -> One-To-Many -> UserUser <- Many-To-One <- User (donc une entité relation avec 2 relations ManyToOne vers User)
Ce qui t'obligerais à concevoir ton entité UserUser à la main.
J'espère que ça peut t'aider En revanche le pourquoi du comment tu te retrouves avec cette table, j'en sais trop rien.
J'ai bien sûr pensé à cette solution (qui me permettra, en plus d'ajouter certains paramètres à mon système, mais on verra plus tard) mais ça me parait quand même étrange.
[Doctrine2]Many-many sur soi même donne une table étrange
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Des tutos surtout et gratuit|Déboguez php|Un cours sur ASP.NET MVC
Des tutos surtout et gratuit|Déboguez php|Un cours sur ASP.NET MVC
Des tutos surtout et gratuit|Déboguez php|Un cours sur ASP.NET MVC