0

我正在开发一个项目,该项目具有具有多个位掩码列的实体。因此,例如我的 User 实体有一个 column specialitiesBitmask。此位掩码将与另一个表相关联,例如 Specialty。如果我想做这样的事情$user->getSpecialties(),最好的方法是什么?我需要查询专业表,并相应地分解位掩码。但是,使用 Doctrine2 您无权访问 EntityManager。

我四处寻找任何解决方案,但找不到太多。看看这个,你可以使用一个监听器来挂钩 postLoad 事件并以这种方式获取 EM,但是这非常hacky而且不干净。

我能想到的唯一其他解决方案是创建其他服务并执行类似的操作,$userService->getSpecialtiesForUser($user);但这也不会那么干净/高效,因为有许多列是位掩码的。

你认为最好的方法是什么?

4

1 回答 1

1

创建一个SpecialtyRepository,并实施getByUser($user)您可以在此处此处找到如何操作。

然后,要获得用户的特长,您可以:

$specialties = $em->getRepository('Specialty')->getByUser($user);

于 2012-09-10T18:12:44.253 回答