У меня есть две модели, а именно MedicineRequestEntry и MedicineRequest. MedicineRequestEntry связан с MedicineRequest через
public function getMedicineRequests()
{
return $this->hasMany(MedicineRequest::className(),
['medicine_request_entry_id' => 'id']);
}
Теперь в сеточном представлении MedicineReuestEntry я пытаюсь получить данные из модели MedicineRequest, используя отношение двумя альтернативными способами.
лайк
[
'attribute' => 'is_delivered',
'value'=> 'medicineRequests.is_delivered'
],
В этом методе я получаю значение как не установлено.
и другой метод:
[
'attribute' => 'is_delivered',
'value'=> '$data->medicineRequests->is_delivered'
],
В этом методе я получаю ошибку как:
Получение неизвестного свойства: app \ models \ MedicineRequestEntry :: $ data-> MedicineRequests-> is_delivered
Теперь мне нужна помощь, что я здесь делаю неправильно.
Спасибо.
Вы должны использовать функцию обратного вызова, см. гид:
[
'value' => function ($data) {
$str = '';
foreach($data->medicineRequests as $request) {
$str .= $request->is_delivered.',';
}
return $str;
},
],
Или для первого результата массива:
[
'value' => function ($data) {
return $data->medicineRequests[0]->is_delivered;
},
],
Других решений пока нет …