回归本源。我建议从这里开始: http: //docs.doctrine-project.org/en/latest/reference/association-mapping.html
class KUser
{
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
class Interest
{
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\KUser")
* @ORM\JoinColumn(name="kuser_id", referencedColumnName="id")
*/
protected $kuser;
这就是在 Interest 和 KUser 之间建立单向ManyToOne
关系所需的全部内容。如果您需要它是双向的,则$interests
向 KUser 添加一个属性并设置inversedBy
in Interest.kuser
在继续之前,请确保您了解简单的关系。
ManyToMany
如果链接表没有其他属性,Doctrine 将自动生成链接表。您的 KUserHasKLists 确实具有其他属性。所以你需要把它变成一个实体,然后使用ManyToOne
关系来链接其他表。虽然从技术上讲,您可能仍然可以在这里使用复合键,但定义一个自动增量主键要容易得多。
class KUserHasKLists
{
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\KUser")
* @ORM\JoinColumn(name="kuser_id", referencedColumnName="id")
*/
protected $kuser;
/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\KList")
* @ORM\JoinColumn(name="klist_id", referencedColumnName="id")
*/
protected $klist;
但同样,从一个简单的关系开始,并确保您了解正在发生的事情。如果您对 phpunit 感到满意,请自己进行一些功能测试。如果没有,让自己成为一个 Symfony 命令,这样你就可以从命令行试验这些东西。