Symfony 西蒙尼。存储库方法。在查询参数中绑定用户(queryBuilder)
我有个问题,我是symfony 3.2的新手 我想根据用户的登录情况查询对象。我听说我需要注入用户信息?但是怎么做呢 存储库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
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();