symfony 学说多重关系

symfony doctrine multiple relations

我对 Symfony 和 Doctrine 很陌生,所以....

在我的应用程序中,我有以下实体:

class Company

/**
 * @ORM\Id()
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;


/**
 * @ORM\Column(name="name", type="string", length=255)
 * @ORM\OneToMany(targetEntity="\UserBundle\Entity\User", mappedBy="company")
 * @ORM\OneToMany(targetEntity="\AppBundle\Entity\Account", mappedBy="company")
 */
protected $name;

public function __construct()
{
    $this->name = new ArrayCollection();
}

用户类 (FOSUserBundle):

class User extends BaseUser

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @var string
 *
 * @ORM\Column(name="firstname", type="string", length=255)
 */
protected $firstname;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255)
 */
protected $name;


/**
 * @ORM\ManyToOne(targetEntity="\AppBundle\Entity\Company")
 * @ORM\JoinColumn(name="company_id", referencedColumnName="id")
 */
protected $company;

和帐户:

class Account

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var integer
 *
 * @ORM\Column(name="num", type="integer")
 */
private $num;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255)
 */
private $name;


/**
 * @ORM\ManyToOne(targetEntity="\AppBundle\Entity\Company")
 * @ORM\JoinColumn(name="company_id", referencedColumnName="id")
 */
protected $company;

有如下关系

一个公司-->许多用户,许多用户-->一个公司; 一个公司 --> 多个账户;许多帐户 --> 一个公司;

是否可以像我一样生成关系:

 * @ORM\Column(name="name", type="string", length=255)
 * @ORM\OneToMany(targetEntity="\UserBundle\Entity\User", mappedBy="company")
 * @ORM\OneToMany(targetEntity="\AppBundle\Entity\Account", mappedBy="company")

--> 两个目标实体?

谢谢你的帮助...

这是绝对错误的。如果您不希望从公司到用户和帐户有任何 link,那么您可以忽略此字段。而且这种关系将是单向的。您将 link 来自用户和帐户的公司。

只是省略错误的映射:

/**
 * @ORM\Column(name="name", type="string", length=255)
 */
protected $name;

如果您想为与公司相关的用户和帐户创建 link,您需要像这样为这些 ArrayCollections 定义字段:

/**
 * @ORM\OneToMany(targetEntity="\UserBundle\Entity\User", mappedBy="company")
 */
protected $users;