首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第三表上引用的OneToMany关系?

第三表上引用的OneToMany关系?
EN

Stack Overflow用户
提问于 2013-03-14 14:40:10
回答 1查看 105关注 0票数 0

我有两个实体,有一个简单的OneToMany关系,任何事情都像预期的那样工作。

用户实体:

代码语言:javascript
复制
class User {
    /**
     * @ORM\OneToMany(targetEntity="Vita", mappedBy="owner")
     */
}

和vita实体:

代码语言:javascript
复制
class Vita {
    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="vitas")
     */
}

到现在为止还好。但是现在我更改了vita实体,并添加了一个OneToOne关系的元实体。这个实体知道所有者和其他东西,但是vita没有所有者属性。

我正在寻找的是使用第三表作为参考的可能性。有没有一种共同的教条方式?像那样吗?

代码语言:javascript
复制
class User {
    /**
     * @ORM\OneToMany(targetEntity="Vita", mappedBy="meta.owner")
     */
}

编辑:

代码语言:javascript
复制
User
- id
- username
- password

Vita
- id
- meta_id
- [other fields]

Meta
- id
- owner_id (User)
- modifier_id (User)
- [other fields]
  • 一个用户有多个Vita。
  • 一个Vita有一个Meta

首先,owner_id是vita的一个属性,现在它移动到元。

EN

回答 1

Stack Overflow用户

发布于 2013-03-14 18:59:32

根据关系模式,应该如下所示:

代码语言:javascript
复制
class User {

    /**
     * @ORM\OneToMany(targetEntity="Meta", mappedBy="owner")
     */
    protected $metasOwned;

    /**
     * @ORM\OneToMany(targetEntity="Meta", mappedBy="modifier")
     */
    protected $metasModified;

}

class Vita {

    /**
     * @ORM\OneToOne(targetEntity="Meta", inversedBy="vita")
     */
    protected $meta;

}

class Meta {

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="metasOwned")
     */
    protected $owner;

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="metasModified")
     */
    protected $modifier;

    /**
     * @ORM\OneToOne(targetEntity="Vita", mappedBy="meta")
     */
    protected $vita;

}

请注意,变量名与关系的反面相关。

然后只需运行以下命令

代码语言:javascript
复制
php app/console doctrine:generate:entities Your/AwesomeBundle/Entity

它将为您创建getter&setter,您将全部设置好。

Your/AwesomeBundle/Entity:真正的路径是或可能是src/Your/AwesomeBundle/Entity

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15412317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档