2017-12-31 182 views
0

symfony 4에서 샘플 리포지토리 클래스를 만듭니다. 이 수업에서 모든 이메일 사용자의 목록을 가져 오는 방법을 만들었습니다. 다음과 같은 배열 구조가 필요합니다.symfony 4, doctrine, getResult 및 getArrayResult 및 getScalarResult가 동일한 구조 결과를 반환합니다.

array(
    "email1", 
    "email2", 
    "email3", 
    ...  
) 

하지만 'getResult'를 사용하면 다차원 배열을 얻을 수 있습니다. 그런 다음 getArrayResult 및 getScalarResult를 사용하여 테스트했으며 매번 정확히 동일한 배열 구조 결과를 얻습니다! 다음은

, 내 서비스 클래스 :

<?php 
class UserRepository extends ServiceEntityRepository 
{ 
    public function __construct(RegistryInterface $registry) 
    { 
     parent::__construct($registry, User::class); 
    } 

    public function getAllEmail(){ 
     $result = $this->createQueryBuilder('u') 
      ->select(array('u.email')) 
      ->setMaxResults(5) 
      ->getQuery(); 
     return array(// getResult && getArrayResult && getScalarResult return exactly same array structure 
      "getResult" => $result->getResult(), 
      "getArrayResult" => $result->getArrayResult(), 
      "getScalarResult" => $result->getScalarResult(), 
     ); 
    } 
} 

그리고 결과는 내가 ") (getAllEmail"의 출력을 덤프 때

enter image description here

왜 getResult를/getArrayResult/getScalarResult 정확히 같은 반환 배열 구조? 나는 어딘가에서 실수를합니까?

편집 : 'getResult를'과 'getArrayResult'내가 다차원 배열을 얻기로하고 먼저

enter image description here

:

public function getAllEmail(){ 
    $result = $this->createQueryBuilder('u','u.email') 
     ->setMaxResults(5) 
     ->getQuery(); 
    return array(
     "getResult" => $result->getResult(), 
     "getArrayResult" => $result->getArrayResult(), 
     "getScalarResult" => $result->getScalarResult(), 
    ); 
} 

그리고 덤프 출력 : 내 저장소 클래스를 수정 차원, 나는 모든 전자 우편을 얻는다 (전자 우편은 열쇠이다). 나는 나의 목표에 더 접근하지만 완벽하지는 않다. 가능한 한 가장 간단한 쿼리를 실행하기를 원하기 때문에 '경량'방법 (영어로는 유감스럽게 생각합니다. -_-) 만 이메일 (전자 메일 + 다른 쓸모없는 사용자 정보는 아님)을 얻고 싶습니다. 가능한가?

답변

0

getResult를 호출하면 Doctrine에 객체를 반환하도록 알려주는 수화 메소드가 수정되었습니다. See this page for more discussion of that.

제 생각에는 관계형 데이터 저장소에서 결과 세트를 가져온 후에는 동일한 결과를 여러 번 가져 와서 다른 형식의 데이터를 가져 오는 것이 이상하고 오히려 예기치 않은 아이디어입니다.

다른 테스트 결과 형식을 사용할 때마다 동일한 쿼리를 여러 번 수행하는 것이 좋습니다.

+0

감사합니다, 나는 나의 방법을 modifiy. 나는 differnt 결과를 얻지 만, 나는 단순한 1 차원 배열을 가지고 있지 않다. – user2137454