Php 获取其他实体中的实体,而无关系

Php 获取其他实体中的实体,而无关系,php,doctrine-orm,Php,Doctrine Orm,我有一个用户实体,用户实体与用户级别实体有关系,这是一个简单的多通(用户表有级别id字段) 用户可以具有下一个级别,它取决于用户级别实体的优先级字段,还取决于其他用户关系角色(某些级别仅适用于某些角色) 我是否可以通过userentity获得下一个用户级别,而不接触其他类 下面是我用于获得下一个级别的SQL: 选择id 从用户级 其中priority>:priority和company_角色和数组[$roleIds]::BIGINT[] 按优先顺序排列 限制1 我现在做的是: $em->get

我有一个
用户
实体,
用户
实体与
用户级别
实体有关系,这是一个简单的
多通
(用户表有
级别id
字段)

用户
可以具有下一个级别,它取决于
用户级别
实体的
优先级
字段,还取决于其他
用户
关系
角色
(某些
级别
仅适用于某些
角色

我是否可以通过
user
entity获得下一个用户级别,而不接触其他类

下面是我用于获得下一个级别的SQL:

选择id
从用户级
其中priority>:priority和company_角色和数组[$roleIds]::BIGINT[]
按优先顺序排列
限制1
我现在做的是:

$em->getRepository('UserLevel')->findNextUserLevel(User$User);
我想做的是:

$user->getNextLevel();

这可能吗?或者我可能做得不对吗?

这被称为活动记录方法。它被广泛使用,但学说并不直接支持它。原则2中的想法是,当你加载用户时,加载级别。话虽如此,还是四处搜索一下如何全局访问容器,这样你就可以从实体内部访问存储库了。我确信在实体内部获取实体存储库不是很好,不是吗?活动记录人员(其中有很多人)会说这很好。数据映射器(D2的方法)没有这么多。Symfony的一个很受欢迎的表亲,Laravel,使用活动记录方法。这是你的选择。老实说,我厌倦了active record(因为我经常使用Yii)。在这种情况下,答案很简单:不。如上所述,$user->getNextLevel需要访问数据库,如果不给实体访问数据库的权限,就无法从实体内部访问数据库。探索条令2的查询功能,并继续使用。我看不出在加载用户时无法加载该级别的原因。