簡體   English   中英

如何使用 symfony doctrine 中的查詢生成器獲取針對權限聯結表的文檔檢查?

[英]How to get documents checking against a permissions junction table with query builder in symfony doctrine?

我很好奇如何使用 Symfony 中的查詢生成器構建 doctrine 查詢,它可以根據相當標准化的權限聯結表排除項目。

就我而言,

User實體

Template實體

userTemplatePermissionTable

在 userTemplatePermissions 實體中,我們有以下屬性:

userToCheck , template , read , write , delete

我想要的東西相當於:

return $this->createQueryBuilder('t')
[where count of t.userDocumentPermissions > 0
  where canRead = true, canWrite = true, canDelete = true
AND userDocumentpermissions.user = :user]

這最終是一個相當簡單的左連接和排除檢查設置,我在我的TemplateRespository.php中完成了以下操作

public function findUserAuthorized($user, $read = null, $write = null, $delete = null)
{
    $query = $this->createQueryBuilder('t')
    ->leftJoin('t.userTemplatePermissions', 'utp')
    ->where('utp.userToCheck = :user')
    ->setParameter('user',$user);

    if ($read !== null) {
        $query->andWhere('utp.read = :read')
        ->setParameter('read',$read);
    }
    if ($write !== null) {
        $query->andWhere('utp.write = :write')
        ->setParameter('write',$write);
    }
    if ($delete !== null) {
        $query->andWhere('utp.delete = :delete')
        ->setParameter('delete',$delete);
    }
    return $query->getQuery()->getResult();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM