小编Kar*_*Bou的帖子

在Symfony 3中的SQLFilter中获取用户

我从Symfony开始,我想制作一个多租户应用程序。

我想在一个表与我的公司表建立链接时,根据连接的用户所属的公司在SQL查询中自动过滤内容。

我找到了创建过滤器的方法,但是找不到在该过滤器中检索有关所连接用户公司的信息的方法。

我使用FOSuser,用自己的User类覆盖它。

我的config.yml

#app\config\config.yml

    doctrine:
        dbal:
           ...
        orm:
            auto_generate_proxy_classes: '%kernel.debug%'
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true
            filters:
                company:
                    class: 'Acme\CompanyBundle\Repository\Filters\CompanyFilter'
                    enabled: true
Run Code Online (Sandbox Code Playgroud)

我的过滤器

<?php
#src\Acme\CompanyBundle\Repository\Filters\CompanyFilter.php

namespace Acme\CompanyBundle\Repository\Filters;

use Doctrine\ORM\Mapping\ClassMetaData;
use Doctrine\ORM\Query\Filter\SQLFilter;
use Acme\UserBundle\Entity\UserEntity;
use Acme\CompanyBundle\Entity\CompanyEntity;

class CompanyFilter extends SQLFilter
{
    public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
    {
        if ($targetEntity->hasAssociation("company")) {

            // here how to get the connected user ???

            $company = $user->getCompany();
            $idCompany = $company->getId();
            return $targetTableAlias . ".company_id = '".$idCompany."'";


        }
        return "";
    }
}
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助

doctrine symfony doctrine-orm

2
推荐指数
1
解决办法
558
查看次数

标签 统计

doctrine ×1

doctrine-orm ×1

symfony ×1