Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 西蒙尼。存储库方法。在查询参数中绑定用户(queryBuilder)_Symfony_Doctrine Orm - Fatal编程技术网

Symfony 西蒙尼。存储库方法。在查询参数中绑定用户(queryBuilder)

Symfony 西蒙尼。存储库方法。在查询参数中绑定用户(queryBuilder),symfony,doctrine-orm,Symfony,Doctrine Orm,我有个问题,我是symfony 3.2的新手 我想根据用户的登录情况查询对象。我听说我需要注入用户信息?但是怎么做呢 存储库 public function findAllActiveCategoryByUser(UserInterface $user) { return $this->createQueryBuilder('sc') ->andWhere('sc.company_id = :company') ->setParamete

我有个问题,我是symfony 3.2的新手 我想根据用户的登录情况查询对象。我听说我需要注入用户信息?但是怎么做呢

存储库

public function findAllActiveCategoryByUser(UserInterface $user)
{
    return $this->createQueryBuilder('sc')
        ->andWhere('sc.company_id = :company')
        ->setParameter('company_id', $this->getUser->getCompany->getCompanyId)
        ->orderBy('sc.createdAt', 'ASC');
}
亚基因型

public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
             ->add('category', EntityType::class, [
            'placeholder' => 'Choose Category',
            'class' => Sub_agent_category::class,
            'query_builder' => function (Sub_agent_categoryRepository $er) {
                return $er->findAllActiveCategoryByUser();

            },
            'constraints' => array(new NotBlank(array('message' => 'Category is required.')))
        ])
试试这个:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $user = $this->securityContext->getToken()->getUser();

    $builder
        ->add('company', EntityType::class, [
            'placeholder' => 'Choose Company',
            'class' => Company::class,
            'query_builder' => function (CompanyRepository $er) {
                return $er->findAllActiveCompany($user);
            },
            'constraints' => array(new NotBlank(array('message' => 'Company is required.')))
        ])
}
存储库:


}

你能说得更具体一点吗?那是实体报告中的代码吗?您可以轻松地在控制器中获取当前登录的用户,并将对象传递到存储库。您好,这是一个非常接近的答案,但我有错误。必须实现接口Symfony\Component\Security\Core\user\UserInterface,未给定,调用您知道如何解决它。您好!尝试转储$user;死亡或var_dump$user;死亡$qb=$this->createQueryBuilder'sc'之前;你能告诉我你的控制器在哪里调用findAllActiveCategoryByUser方法吗?嗨,我没有在控制器中使用查询,我在表单中使用它。请看更新的问题,然后你能把你的表格显示在你叫这个方法的地方吗?
public function findAllActiveCategoryByUser(UserInterface $user)
{
    $qb = $this->createQueryBuilder('sc');
    $result = $qb->select('sc')
        ->where('sc.company_id = :company')
        ->setParameter('company', $this->getUser->getCompany->getCompanyId)
        ->orderBy('sc.createdAt', 'ASC')
        ->getQuery();
    return $result->getResult();