【问题标题】:Symfony: How do I annotate entity properties that are objects to get Doctrine to store a foreign key?Symfony:如何注释作为对象的实体属性,以使 Doctrine 存储外键?
【发布时间】:2012-07-13 17:03:05
【问题描述】:

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

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

一个Job 有一个WebSite;一个WebSite 可以被许多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 应该存储相关WebSiteid

在不对上述内容进行任何更改的情况下,调用 php app/console doctrine:migrations:diff 会为名为 Job 的表生成一个新的迁移,其中包含一个 id 字段。

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

【问题讨论】:

    标签: symfony annotations doctrine-orm


    【解决方案1】:

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

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

    但是,如果您发现自己想要调整关系以更好地满足您的需求,请查看annotation reference(针对这种特殊情况的ManyToOneJoinColumn)。还有一篇关于association mapping 的综合文章,你可能会觉得有趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2014-12-23
      • 2014-05-14
      相关资源
      最近更新 更多