我有两个具有简单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]
首先,owner_id是vita的属性,现在它已移入meta。
答案 0 :(得分:0)
根据关系架构,它应如下所示:
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
它将创造吸气剂和放大器你和你的定制者将会全力以赴。
Your/AwesomeBundle/Entity
:真正的路径是src/Your/AwesomeBundle/Entity
。