Relation entre entités dans différents bundles
Bonjour à tous.
J'ai suivi les deux tutoriels d'introduction à symfony 2 proposés par djayp et je dois dire qu'ils m'ont vraiment beaucoup aidé. Je tiens à le remercier encore une fois pour ça.
Je suis débutant en php et maintenant que j'essaie de faire les choses par moi même il y a tout de suite plus de problèmes...
J'utilise le bundle FOSUserBundle de la même manière que dans le tutoriel. J'ai aussi un Bundle nommé NetworkBundle dans lequel j'ai créé une entité Message.php.
Chaque message appartient à un utilisateur et j'ai donc créé une relation OnetoMany. Je vous met le code de mes deux entités:
User.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
<?php
namespace MyApp\UtilisateurBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\generatedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="NetworkBundle\Entity\Message", mappedBy="user")
* @ORM\OrderBy({"createdAt" = "DESC"})
*
* @var ArrayCollection $message
*/
protected $message;
public function __construct()
{
parent::__construct();
}
/**
* Get id
*
* @return integer $id
*/
public function getId()
{
return $this->id;
}
/**
* Add message
*
* @param NetworkBundle\Entity\Message $message
*/
public function addMessage(\NetworkBundle\Entity\Message $message)
{
$this->message[] = $message;
}
/**
* Get message
*
* @return Doctrine\Common\Collections\Collection $message
*/
public function getMessage()
{
return $this->message;
}
} |
et Message.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| <?php
namespace MyApp\NetworkBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="message")
*/
class Message
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="text")
*/
protected $message;
/**
* @ORM\Column(type="datetime", name="created_at")
*
* @var DateTime $createdAt
*/
protected $createdAt;
/**
* @ORM\ManyToOne(targetEntity="UtilisateurBundle\Entity\User", inversedBy="message")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*
* @var User $user
*/
protected $user;
/**
* Get id
*
* @return integer $id
*/
public function getId()
{
return $this->id;
}
/**
* Set message
*
* @param text $message
*/
public function setMessage($message)
{
$this->message = $message;
}
/**
* Get message
*
* @return text $message
*/
public function getMessage()
{
return $this->message;
}
/**
* Set createdAt
*
* @param datetime $createdAt
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
}
/**
* Get createdAt
*
* @return datetime $createdAt
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set user
*
* @param UtilisateurBundle\Entity\User $user
*/
public function setUser(\UtilisateurBundle\Entity\User $user)
{
$this->user = $user;
}
/**
* Get user
*
* @return UtilisateurBundle\Entity\User $user
*/
public function getUser()
{
return $this->user;
}
} |
C'est deux fichier sont les fichiers que j'obtiens après avoir utilisé la commande :
Code:
php app/console doctrine:generate:entities MyApp
Ensuite quand je passe la commande
Code:
php app/console doctrine:schema:update --force
J'obtiens une erreur:
Code:
1 2
| [ErrorException]
Warning: class_parents(): Class UtilisateurBundle\Entity\User does not exist and could not be loaded in /miniprojet/vendor/doctrine/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php line 222 |
Je n'arrive pas à interpréter cette erreur. Il y a peut-être une erreur de mapping mais dans mon fichier config.ylm j'ai :
Code:
1 2 3 4 5
|
doctrine:
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true |
ce qui semble être la configuration normale. Je suis sur la béta 4 de symfony 2. Pouvez vous m'aider à interpréter et résoudre cette erreur?
Cordialement
Edit: J'ai oublié de préciser que les deux commandes fonctionnent quand les entités sont dans le même bundle.