我不知道如何在两个bundle之间建立实体关系。
到目前为止,我最接近成功的是:
用户实体:
<?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;
//...
在生成实体和更新数据库时,我没有得到任何错误,并且在数据库中正确设置了关系。
但当我试图获取文章时,我得到的是:
Class Acme'AuthBundle'Entity'Article does not exist
500 Internal Server Error - ReflectionException
请注意,User实体在AuthBundle中,Article实体在NewsBundle中。
谢谢。
在定义一对多、多对一关系时,需要指定实体类的名称。仍然将Acme'AuthBundle'Entity'User
而不是Aief'AuthBundle'Entity'User
指定为targetEntity
。
文章和文章存储库也是如此。