使用doctrine2“类表继承”来安排不同类型的事件。
假设方案:
这一切都很好,但事实是 - 由于我们的模块化内部系统 - 某些类可能会从鉴别器映射中“取消注册”(在缓存中?)。 当发生这种情况时,findAll将抛出一个异常,告诉我他找不到正确的对象映射。
所以我想到的选项是:
重写存储库方法(findOne,findBy等)以向查询添加过滤器。
$discrClasses = array();
foreach($this->_em->getMetadataFactory()->getAllMetadata() as $class) {
$discrClasses[] = $class->getName();
}
$discrQuery = sprintf('f.discr INSTANCE OF (%s)', implode(',', $discrClasses));
我的问题是:这是处理此问题的正确方法还是有更好的解决方案?