2017-12-20 21 views
1

zend1 사이트를 yii2로 업그레이드하려고하는데 테이블 모델은 fetchAssoc을 사용하여 데이터베이스에서 ID 열을 배열 키로 사용하여 레코드를 가져 오는 경우가 많습니다. 거기 yii2 동등한가?zend1 fetchAssoc에 해당하는 yii2가 있습니까?

예 : PHP

$query = table::find()     
    ->select(['id', 
     'firstName', 
     'lastName' 
    ])->indexBy('id'); //no effect? 

$command = $query->createCommand(); 

$results = $command->queryAll(); 

Datebase 내가 그것을

[ 
    15=> 
     [ 
      id=>15 
      firstName=>"fname", 
      lastName=>"lname" 
     ], 
    16=> 
     [ 
      id=>16 
      firstName=>"fname2", 
      lastName=>"lname2" 
     ] 
] 

대신

[ 
    0=> 
     [ 
      id=>15 
      firstName=>"fname", 
      lastName=>"lname" 
     ], 
    1=> 
     [ 
      id=>16 
      firstName=>"fname2", 
      lastName=>"lname2" 
     ] 
] 
로 돌아가려면

[ 
    [ 
     id=>15 
     firstName=>"fname", 
     lastName=>"lname" 
    ], 
    [ 
     id=>16 
     firstName=>"fname2", 
     lastName=>"lname2" 
    ] 
] 

포함

내가 인덱스를 생성

$results=array_combine(array_column($results,key($results[0])), $results); 

을 추가 할 수 있지만 내가 그것을 할 프레임 워크를 사용하는 것을 선호합니다.

감사

+1

것은 당신이 당신의 발견에서()는 간단한 asArray을 필요로 할 수있다() ...하지 않았다 – scaisEdge

+0

어떤 영향을 미치는 것 같습니다. 나는 그것이 인덱스라고 생각하기 시작했습니다. 단지 사용법을 알아 내려고 시도했습니다. –

+0

샘플과 예상 결과를 추가해야합니다. – scaisEdge

답변

0

그렇게하려면, 그것은 (사실) asArray 및 indexBy ('열 이름 또는 함수')을 필요로하고 모든, 또는 열, 또는 하나를 호출합니다. 내가 이전에 사용하던

$results = table::find()->asArray(true)->indexBy('id')->all() 

$command = $query->createCommand(); 
$results = $command->queryAll(); 

최종 코드 예제 :

$query = table::find()     
    ->select(['id', 
     'firstName', 
     'lastName' 
    ])->indexBy('id')->asArray(true); 
$results=$query->all();