在学说中有种方法可以有这样的东西:
class Entity {
/**
* @Column(name="related_entity_id")
*/
private $relatedEntityId;
/**
* @ManyToOne(targetEntity="RelatedEntitiy")
* @JoinColumn(name="related_entity_id", referencedColumnName="id")
*/
private $relatedEntity;
}
我想做的就是做这样的事:
call Entity::setRelatedEntityId($someId), and persist the entity, and have the entity return the related entity by calling Entity::getRelatedEntity().
有关实体是从一个严格限定的表格中挑选出来的,该表格在运行时决不会动态增长,因此相关实体有一定数目的代号。
在创建新实体时,我想确定相关实体的代号,但不必从数据库中取出整个相关实体。
只要我可以测试这一点,它就行不通,因为如果我设定相关的实体Id,而不是相关的实体,“理论”就自动将相关实体的栏目设置为无效,因为基本上没有建立任何关系。
我也曾尝试过做这样的事情:
删除相关的 EnitityId 属性和使用
Entity::setRelatedEntity(new RelatedEntity($relEntId))
the constructor of the RelatedEntity will set the id, but not other values. I do not want to persist the RelatedEntity (it s values are already set in the DB for the given $relEntId), but this time Doctrine signals an error at flush, because it has an unpersisted entity.
简而言之,我想做的就是在不知道相关实体的编号的情况下 建立某种关系。如果有其他方法可以做到这一点,请分享。
提前感谢
编辑:
我找到了一种变通办法。因为相关的实体将是一组有限的不可改变的物体,我做了以下工作:
- use the entityManager to find all RelatedEntities;
- inject the list to the object that will be creating new Entities
- when creating a new Entity, select one of the RelatedEntities from the list as its RelatedEntity
我会把问题保留一两天 以防有人想出更好的办法