2015-11-09 10 views
4

enter image description here Создание системы управления с использованием yii2. Am пытается отобразить данные многих одного отношения, но возвращает ошибку не установлена, как показаноотображение нескольких связанных данных в yii2

Таблица:

Case table 
Columns: ref_no (primary key),case_description,case_raised_on 

Evidence table 
Columns: ref_no(foreign key), path, evidence_type 

случай может иметь несколько свидетельств и каждое доказательство принадлежит к одному делу

RELATIONSHIPS IN THE MODELS: 

Case Model: 

public function getEvidences() 
{ 
    return $this->hasMany(Evidence::className(), ['case_ref' => 'ref_no']); 
} 



Evidence model 
public function getEvidenceType() 
{ 
    return $this->hasOne(EvidenceType::className(), ['type' => 'evidence_type']); 
} 

контроллер

Case controller 
public function actionView($id) 
{ 
return $this->render('view', [ 
     'model' => $this->findModel($id), 
]); 
} 

В вид файла

<?= DetailView::widget([ 
     'model' => $model, 
     'attributes' => [ 
      'ref_no', 
      'case_description', 
      'raised_on', 
      'status', 
      'updated_on', 
     'evidences.evidence_type',       
     ], 
    ]) ?> 

Вид файла возвращает ошибку не установлен на (evidences.evidence_type) .Это должна отображать запись всех доказательств, связанных с определенным случае как указано в ref_no2

+0

Я не понимаю эту ошибку. Может, пожалуйста, покажите точную ошибку, сообщенную ... – scaisEdge

+0

#Scais ошибка на самом деле не содержит записей модели доказательств, связанных с моделью случая. Вместо этого он отображается не в качестве значения –

ответ

2

Потому что вы используете DetailView Виджет yii2 и занимает всего одну модель. Так что если вы хотите, чтобы получить значение от отношения вы должны назвать это соотношение в массиве атрибутов:

[ 
'label' => 'Evidences', 
'value' => implode(',',\yii\helpers\ArrayHelper::map($model->evidences, 'id', 'evidence_type')), 
], 

$model->evidences ваше отношение, которое вы заявили в Case Model

+0

Спасибо, он работал Touqeer –

+0

Если он работает для вас, вы можете отметить его как правильный ответ моему другу :) –

+0

Хорошо, и если я хочу отобразить, он записывает не как (например, andy, kari, john), но в качестве списка блоков, движущихся вниз (например, 1.andy 2.kari 3.John) –

3

вы делаете это неправильный путь, так как случай имеет много Evidences .. Один из вариантов вы должны взрываться массив с ,

попробовать ,,

<?php 
$evidences = \yii\helpers\ArrayHelper::getColumn((\yii\helpers\ArrayHelper::getColumn($model , 'evidences')) ,'evidence_type'); 
?> 
<?= \yii\widgets\DetailView::widget([ 
    'model' => $model, 
    'attributes' => [ 
     'ref_no', 
     'case_description', 
     'raised_on', 
     'status', 
     'updated_on', 
     [ 
      'label' => 'Evidences', 
      'value' => implode(',' ,$evidences), 
     ], 
     'evidences.evidence_type', 
    ], 
]) ?> 
+0

После использования функции implode я получаю ,,,. Я включил моментальный снимок ошибки в вопросе выше –