[php] doctrine dql 쿼리 결과로 1 차원 스칼라 배열을 얻는 방법?


Answers

PHP 5.5에서 array_column 을 사용 array_column 문제를 해결할 수 있습니다.

$result = $em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
$ids = array_column($result, "id");
Question

Auction 테이블의 id 열에서 값 배열을 가져 오려고합니다. 이것이 원시 SQL 인 경우 다음과 같이 작성합니다.

SELECT id FROM auction

그러나 내가 교리에서 이것을 실행하면 :

$em->createQuery("SELECT a.id FROM Auction a")->getScalarResult(); 

나는 다음과 같은 배열을 얻는다 :

array(
    array('id' => 1),
    array('id' => 2),
)

대신, 나는이 같은 배열을 얻고 싶습니다.

array(
    1,
    2
)

Doctrine을 사용하여 어떻게 할 수 있습니까?




Ascarius의 답변은 우아하지만 메모리 사용에주의하십시오! array_map() 은 전달 된 배열의 복사본을 만들고 메모리 사용을 효과적으로 두 배로 만듭니다. 수십만 개의 배열 항목으로 작업하는 경우 문제가 될 수 있습니다. 참조로 PHP 5.4 호출 시간이 제거되었으므로 수행 할 수 없습니다.

// note the ampersand
$ids = array_map('current', &$result);

이 경우 당신은 명백하게 갈 수 있습니다.

$ids = array();
foreach($result as $item) {
  $ids[] = $item['id'];
}



Links