我正在一個現有的數據庫上實現一個新的應用程序。現有數據庫正在被移動應用程序使用,並且由於移動應用程序正在由不同的團隊開發,所以我不允許更改現有表格的結構。如何使用單獨的鏈接表實現OneToMany關聯?
現有的數據庫有一個用戶表,對於我自己的應用程序用戶,我創建了我自己的表和Doctrine實體,名爲PortalUser(表portal_user)。
PortalUser實體將有一個名爲$ children的OneToMany關聯,它指向現有的用戶實體。換句話說,每個PortalUser都有零個或多個子用戶實體。
來實現這一點的最自然的方式是有這樣的事情(簡體):
用戶(現有的實體):
class User
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var PortalUser
*
* @ORM\ManyToOne(targetEntity="PortalUser", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
}
PortalUser實體:
class PortalUser
{
/**
* @var int
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var array
* @ORM\OneToMany(targetEntity="User", mappedBy="parent")
*/
protected $children;
}
這將在現有的用戶表中創建一個不允許的新列「parent_id」。那麼是否有可能通過parent_id和child_id列獲取單獨的鏈接表,等同於常規的ManyToMany鏈接表?如果是的話,那麼什麼註釋會導致這樣的結構?