2015-11-01 43 views
0

我有一些(Doctrine 2)具有相似字段的实体,例如foo,valuedatetime。我想利用这一点,并使用共享方法定义自定义FooEntityRepository如何抽象Doctrine 2实体字段?

自定义EntityRepository很容易创建,但是如何强制使用此存储库的实体具有foo,value,datetime字段?也许其中一个实体存储的值不是foo,而是bar。我想预测这一点。

我可以定义一个与getFooFieldNamegetValueFieldName的接口,表示有问题的实体应该实现,但这是要走的路吗?在这种情况下,我应该尽量让存储库“评估”函数是否返回有效的字段名称吗?

回答

0

也许你可以定义自定义EntityRepository,然后通过自定义实体存储库为抽象实体的每个子实体扩展它。然后,所有的实体都可以使用所有的共享方法。

+0

谢谢你的回应。那么,这种情况下的问题是EntityRepository不再是一般的了。像存储库中的getFooFieldName这样的方法仍然需要运行时验证。另外,我创建了实体和存储库之间的高度耦合,我认为这不是有利的。 – user228395