SQL 到 Doctrine 的 QueryBuilder 转换



我在房间和权限实体之间有多对多关系。教义自动创建了第三个"room_rights"表。权限是分层的,我使用具体化路径方法将它们存储在数据库中,因此"权限"表具有"路径"字段。

我想获得具有权限的房间,其路径类似于我提供的参数。我可以用SQL查询来做到这一点:

select ro.* 
from  
    rooms as ro, 
    room_rights as rr, 
    rights as ri 
where 
    rr.rights_id = ri.id and 
    rr.room_id = ro.id and 
    ( 
        ri.path like '99,%' OR
        ri.path like '100,102,%'
    )

当我在数据库上运行时,这有效。现在,我必须使用 Doctrine 的 QueryBuilder 来制作它,但我不知道当有连接表时该怎么做。你能帮忙吗?

所以,今天重新开始,我设法解决了这个问题。事实证明,QueryBuilder表达式非常简单:

$filter = "(ri.path like '99,%' OR ri.path like '100,102,%')"; // of course in-app it is constructed dynamically
$em->createQueryBuilder()
   ->select('ro')
   ->from('AppBundleEntityRoom', 'ro')
   ->innerJoin('ro.rights', 'ri', 'WITH', $filter)
;

相关内容

  • 没有找到相关文章