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的查询功能,并继续使用。我看不出在加载用户时无法加载该级别的原因。