Привет, у меня эта странная проблема. У меня было отношение таблицы. и я хочу посмотреть имя связанного поля таблицы вместо id.
вот моя модель:
public function getQCat() { return $this->hasOne(QbCategory::className(), ['id' => 'q_cat']); }
вот мое мнение:
<?php echo DetailView::widget([ 'model' => $model, 'attributes' => [ 'q_cat', 'question:ntext', 'q_c1:ntext', 'q_c2:ntext', 'q_c3:ntext', 'q_c4:ntext', 'q_ans:ntext', ], ]) ?>
что поле «q_cat» в поле зрения я хочу отображать имя вместо id. Я попытался использовать «q_cat.name», но он говорит (не установлен).
Благодарю.
если вы используете модель QbCategory
id name
и вы хотите получить доступ к значению QbCategory в своем основном классе, вы можете получить доступ к имени атрибута таким образом
в основном классе
добавить отношение
public function geQcat() { return $this->hasOne(QbCategory::className(), ['id' => 'qcat_id']); // qcat_id is the column name in Main class that join QCat to Main
то вы можете построить геттер для имени QbCategory
public function getQcatname() { return $this->qcat->name; // name is the name of name column in QCat }
затем в вашем главном окне просмотра деталей
<?php echo DetailView::widget([ 'model' => $model, 'attributes' => [ 'qcatname', // this i the ref for getQcatname function in Main Model 'question:ntext', 'q_c1:ntext', 'q_c2:ntext', 'q_c3:ntext', 'q_c4:ntext', 'q_ans:ntext', ], ]) ?>
Простое решение
[ 'attribute' => 'q_cat', 'value => $model->Qcat->qcat_name ]