OnteToOne识别关系

时间:2016-03-31 17:29:22

标签: symfony doctrine-orm

我设置了以下两个实体:

/**
 * Post
 * @ORM\Table(name="post")
 * @ORM\Entity(repositoryClass="PostRepository")
 */
class Post
{
    /**
     * @var integer
     *
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer", options={"unsigned":true})
     */
    protected $id;

    // ...
###################

/**
 * Push
 *
 * @ORM\Table(name="push")
 * @ORM\Entity()
 */
class Push
{
    /**
     * @ORM\id @ORM\OneToOne(targetEntity="Post")
     * @ORM\JoinColumn(name="post_id", nullable=false)
     */
    protected $post;

    // ...
}

我知道我应该坚持并刷新一个帖子实体,以便能够坚持推送一个,这不是重点:p

schema:create上,我希望MySQL在推送表中的post_id上创建外键约束,但我通过PMA看到的只是主键。

enter image description here

为什么没有创建外键?我错过了什么,我的意思是是否有任何注释标记/选项可以设置以解决此问题?

1 个答案:

答案 0 :(得分:0)

实际上,事实证明创建了外键,但由于它被定义为主键,因此不需要其他索引! 我们可以看到外键看"关系视图"上面的按钮:

class Push
{
    /**
     * @ORM\Id
     * @ORM\OneToOne(targetEntity="Post")
     * @ORM\JoinColumn(name="post_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
     */
    protected $post;

enter image description here

希望它有助于澄清事情......