我有两个实体,有一个简单的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的一个属性,现在它移动到元。
发布于 2013-03-14 18:59:32
根据关系模式,应该如下所示:
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&setter,您将全部设置好。
Your/AwesomeBundle/Entity:真正的路径是或可能是src/Your/AwesomeBundle/Entity。
https://stackoverflow.com/questions/15412317
复制相似问题