1

我仍在掌握 Symfony 和 Doctine,我很欣赏这听起来可能过于简单。

我目前有两个基本实体:(WebSite具有idcanonicalUrl属性)并且Job作为一个属性具有WebSite.

AJob有一个WebSite;aWebSite可以被许多Jobs 引用。两者都在同一个命名空间下。

这里相关的是Job实体:

/**
 * 
 * @ORM\Entity
 */
class Job
{
    /**
     * 
     * @var integer
     * 
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     *
     * @var WebSite
     */
    protected $website;
}

用数据库术语来说,持久化Job应该存储id相关的WebSite.

如果不对上述内容进行任何更改,调用会为使用单个字段php app/console doctrine:migrations:diff命名的表生成新的迁移。Jobid

我如何注释Job::website这样 Doctrine 知道创建一个整数字段并将值作为对象id的值Website

4

1 回答 1

2

您必须明确定义关系。最短的是

/**
 * @ORM\Entity
 */
class Job
{
    /**
     * @var WebSite
     *
     * @ORM\ManyToOne(targetEntity="Website")
     */
    protected $website;
}

但是,如果您发现自己想要调整关系以更好地满足您的需求,请查看注释参考ManyToOne以及JoinColumn针对这种特殊情况)。还有一篇非常全面的关于关联映射的文章,您可能会觉得很有趣。

于 2012-07-13T17:36:57.883 回答