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;
我对 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;