2017-12-25 12 views
0

저는 Symfony와 Doctrine을 사용하여 다양한 테이블에 저장된 다양한 데이터를 관리하는 애플리케이션을 개발하고 있습니다. 나는 유즈 케이스의 90 %에 대해 단순한 (충분히 복잡한) 검색 폼을 구현했다. 그러나 문제는 가장 열심히 복잡하고 꼬인 쿼리 일 수있는 마지막 10 %이다.고급 사용자에게 SQL 쿼리를 직접 실행할 수있는 권한 부여

내 생각에 고급 사용자가 SELECT 만 실행되도록 Doctrine에서 사용되는 DQL (SQL dialiect) 쿼리를 작성하고이를 나머지 사용자에 대해 사용할 수있게 만들어서 코드 작성을 피할 수있었습니다 그 (것)들을 밀고 오히려 역동적이고 확장 할 수있게하십시오. 쿼리는 데이터베이스에 저장되며 사용자는 쿼리의 일부 매개 변수를 변경하여 자신의 필요에 맞출 수 있습니다.

이 고급 보안 검사가 필요하다는 것을 알고 있지만이 솔루션을 사용할 수 있습니까?

고맙습니다.

답변

1

이것은 이미 DQL 쿼리를 실행할 수있는 심포니 콘솔의 일부입니다.

  1. 하면 엔티티 관리자에게 가져
  2. $ 쿼리 = $ 보하기> createQuery ($의 DQL)
  3. $ 결과 집합 = $ 질의 -> ($ 매개 변수)을 실행;
  4. 더 완벽한 솔루션 확인을 위해 $ 결과 집합

렌더링 :

/** 
    * {@inheritdoc} 
    */ 
    protected function execute(InputInterface $input, OutputInterface $output) 
    { 
     /* @var $em \Doctrine\ORM\EntityManagerInterface */ 
     $em = $this->getHelper('em')->getEntityManager(); 

     [...] 

     $query = $em->createQuery($dql); 

     [...] 

     $resultSet = $query->execute([...]); 

     // Show the results 
    } 
공급 업체/교리/ORM/lib 디렉토리/교리/ORM/도구/콘솔/명령/RunDqlCommand.php