我无法弄清楚如何在2个捆绑包之间建立实体关系。
到目前为止,我最接近成功的是:
用户实体:
<?php
namespace Acme\AuthBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @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="Acme\NewsBundle\Entity\Article", mappedBy="author")
*/
protected $articles;
//...
文章实体:
<?php
namespace Acme\NewsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="Acme\NewsBundle\Entity\ArticleRepository")
* @ORM\Table(name="articles")
*/
class Article
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
//...
/**
* @ORM\ManyToOne(targetEntity="Acme\AuthBundle\Entity\User", inversedBy="articles")
*/
protected $author;
//...
生成实体并更新数据库时,我没有错误,并且在DB中正确设置了关系。
但是当我尝试获取文章时,我得到了这个:
Class Acme\AuthBundle\Entity\Article does not exist
500 Internal Server Error - ReflectionException
请注意,User实体位于NewsBundle中的AuthBundle和Article实体中。
感谢。
答案 0 :(得分:8)
在定义一对多,多对一关系时,需要指定实体类的名称。您仍然指定Acme\AuthBundle\Entity\User
而非Aief\AuthBundle\Entity\User
为targetEntity
。
文章和文章存储库相同。