如何在学说上使用“外键”?

时间:2013-04-12 11:28:56

标签: database symfony doctrine-orm

我正在使用symfony2和doctrine

制作课程管理系统

我很困惑在学说中使用外键。

/Entity/User.php

class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     *@ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\Lesson", inversedBy("teacher"))
     */
    protected $id;
    .
    .
}

/Entity/Lesson.php

class Lesson
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     *
     * @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\User", inversedBy("id"))
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    private $teacher;
    .
    .
}

每个“课程”都有一位教师在User.php中注册。

如何为此目的编写注释?

我还计划每个课程都有来自/ Entity / User的多名学生。 如何为此目的编写注释? (多对多?)

我已经研究过,但是找不到教条注释的好文件。

非常感谢

1 个答案:

答案 0 :(得分:10)

这里有一些学说注释的备忘单:link

对于您的问题,您需要在关联的每一侧定义变量。

在Lesson.php中:

/**
 * @ORM\OneToOne(
 *     targetEntity="Acme\UserBundle\Entity\User", 
 *     inversedBy="lessons*removethis : name of the variable in user.php*"
 * )
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
private $teacher;

在User.php中:

/**
 * @ORM\OneToOne(
 *     targetEntity="Acme\UserBundle\Entity\Lesson", 
 *     mappedBy="teacher*removethis : name of the variable in lesson.php*"
 * )
 */
private $lessons;

是的,ManyToMany对你正在寻找的目的有好处:)