2015-01-02 3 views
3

두 가지 모델 즉, MedicineRequestEntry 및 MedicineRequest가 있습니다. MedicineRequestEntry는yii2 : Gridview의 관련 모델 데이터

public function getMedicineRequests() 
    { 
     return $this->hasMany(MedicineRequest::className(), 
['medicine_request_entry_id' => 'id']); 
    } 

이제 MedicineReuestEntry의 그리드보기에 내가에서

[ 
      'attribute' => 'is_delivered', 
      'value'=> 'medicineRequests.is_delivered' 
     ], 

같은 두 가지 다른 방법

를 사용하여 관계를 사용하여 MedicineRequest 모델에서 데이터를 가져하려고 통해 MedicineRequest 관련이있다 이 방법은 내가 설정하지 않은 값을 얻고 있습니다. 다른 방법

알 수없는 속성을 얻기 : 응용 프로그램 \ 모델은 \ MedicineRequestEntry : $ 데이터 -> medicineRequests->

을 is_delivered 내가 같은 오류가 발생하고이 방법

[ 
       'attribute' => 'is_delivered', 
       'value'=> '$data->medicineRequests->is_delivered' 
      ], 

이제 도움이 필요합니다. 여기서 제가 잘못하고있는 것이 있습니다. 감사합니다.

답변

3

당신은 콜백 함수를 사용해야 the guide를 참조하십시오

[ 
    'value' => function ($data) { 
     return $data->medicineRequests[0]->is_delivered; 
    }, 
], 
+0

안녕 @deacs - 감사 :

[ 'value' => function ($data) { $str = ''; foreach($data->medicineRequests as $request) { $str .= $request->is_delivered.','; } return $str; }, ], 

또는 배열의 첫 번째 결과에 대한

. 하지만 여전히 '객체가 아닌 객체를 얻으려고 시도하는 중'과'return $ data-> medicineRequests-> is_delivered;와 같은 오류가 발생합니다. – Pawan

+0

아, hasMany' 관계가 있으므로 MedicineRequests의 배열. 'medicineRequests'가 배열이기 때문에'$ data-> medicineRequests-> is_delivered' 또는'medicineRequests.is_delivered'를 사용할 수 없습니다. 편집을 시도하고'medicineRequests.is_delivered'을 제거하십시오. – deacs

+0

Thanks @deacs. 이제 데이터를 반환하고 있지만 문제는 해결되지 않았습니다. 어떻게 할 수 있습니까? 예를 들어'is_delivered'는 여러 행에 걸쳐 반복되고 그리드 뷰 행을 모든 결과에 대해 여러 번 반복하기를 원합니다. 그게 가능하지 않니? – Pawan