2017-11-02 22 views
1

Symfony3 프레임 워크를 사용하고 있으며 사용자 엔티티와 파일 엔티티가 있습니다. 사용자가 업로드 한 모든 크기의 파일의 합계로 소나타 관리 사용자 목록에 표시하고 싶습니다. 해당 필드를 정렬 가능하게 만들려면 오류가 발생합니다.doctrine criteria에 dql을 전달할 수 있습니까?

`Catchable Fatal Error: Argument 1 passed to Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::entityJoin() must be of the type array, null given, called in /home/milos/sites/coinaphoto/vendor/sonata-project/doctrine-orm-admin-bundle/Datagrid/ProxyQuery.php on line 143 and defined` 

파일 합계를 계산하는 사용자 엔터티에 사용자 지정 함수가 있습니다. 문자열을 반환합니다.

내 질문에 어떻게 든 합계를 얻기 위해 조건에 ​​SQL을 전달할 수 있습니다. 아니면 이것을 구현할 다른 방법을 제안 할 수 있습니까?

` public function getStoragge(){ 
     $criteria = Criteria::create() 
      ->where(Criteria::expr()->someexpression...); 
     $matches = $this->file->matching($criteria); 
    }` 

당신은 내가 당신의 DQL의 일에 대해 모르는 분야

` $dql = "SELECT SUM(e.amount) AS balance FROM Bank\Entities\Entry e " . 
    "WHERE e.account = ?1"; 
    $balance = $em->createQuery($dql) 
       ->setParameter(1, $myAccountId) 
       ->getSingleScalarResult();` 

답변

0

를 집계 할 때와 같은 비슷한하지만 소나타 관리 테이블 뷰에 정렬에 대한 몇 가지 사실. 문제는 모델에서 "가상"하고있는 작업과 상관없이 데이터베이스 작업으로 백그라운드에서 작업을 정렬하는 것입니다. 모델에 메서드 만 추가하는 경우 DataGrid는이 메서드/속성을 정렬에 포함 할 수 없습니다.

제 경험상, 해당 테이블에서 실제로 사용할 수없는 필드별로 정렬 할 수 없다는 것입니다. 정렬 단추를 클릭하면 전체 쿼리를 직접 작성하더라도 사용자의 요청을 무시하는 완전한 다른 쿼리가 실행됩니다.

누군가가 나에게 반대를 말한다면 내가 기뻐할거야 ...

참조 또한이 문제 https://github.com/sonata-project/SonataAdminBundle/issues/1077

+0

그래, 난 그, 그냥 누군가가 해결책을 찾을 수있다 묻고 싶은 문제 나 다른 방법을 사용하여 보았다 . –

+0

난 그냥 정렬 동작을 다시 작성하는 기회를 참조하십시오 ... 나는 아주 깊은 핵심 물건 thats 생각 (안 그래?) ... 불행히도 지금까지 방법을 찾지 못했습니다 ... 제발 말해줘 theres 가끔 편안한 솔루션 ... –