我得到了两个具有简单OneToMany关系的实体,并且一切都如预期的那样工作。
用户实体:
class User {
/**
* @ORM'OneToMany(targetEntity="Vita", mappedBy="owner")
*/
}
和vita实体:
class Vita {
/**
* @ORM'ManyToOne(targetEntity="User", inversedBy="vitas")
*/
}
到目前为止,一切顺利。但是现在我改变了vita实体,并添加了带有OneToOne关系的元实体。这个实体知道所有者和其他东西,但是vita不再有所有者属性。
我正在寻找的是使用第三个表作为参考的机会。有共同的学说方法吗?类似的东西?
class User {
/**
* @ORM'OneToMany(targetEntity="Vita", mappedBy="meta.owner")
*/
}
编辑: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的属性,现在它移到了meta.
根据关系模式,它应该是这样的:
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;
}
注意变量名与关系的反面相关。
然后运行命令
php app/console doctrine:generate:entities Your/AwesomeBundle/Entity
,它会创建getter &设置你,你将所有设置。
Your/AwesomeBundle/Entity
:真实路径是或可能是src/Your/AwesomeBundle/Entity