2016-08-18 1 views
0

Ich möchte Datenrelation anzeigen, indem Sie eine Beziehung zwischen Tabelle alumnonintegrasi mit Alumnys2, aber wenn ich es mit Gridview gemacht, gab es einen Fehler.Unbekannte Eigenschaft erhalten: app models AlumnyS2 :: alumuintegrasi

sagte es

unbekannte Eigenschaft bekommen: app \ models \ AlumnyS2 :: alumniintegrasi.

hier ist der Code

<?php 

use yii\helpers\Html; 
use yii\grid\GridView; 
use app\models\AlumniIntegrasi; 

/* @var $this yii\web\View */ 
/* @var $searchModel app\models\AlumnyS2Search */ 
/* @var $dataProvider yii\data\ActiveDataProvider */ 

$this->title = Yii::t('app', 'Alumny S2s'); 
$this->params['breadcrumbs'][] = $this->title; 
?> 
<div class="alumny-s2-index"> 

    <h1><?= Html::encode($this->title) ?></h1> 
    <?php // echo $this->render('_search', ['model' => $searchModel]); ?> 

    <p> 
     <?= Html::a(Yii::t('app', 'Create Alumny S2'), ['create'], ['class' => 'btn btn-success']) ?> 
    </p> 
    <?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'filterModel' => $searchModel, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 

      'NRP', 
      //'NamaMahasiswa', 

      [ 
      'attribute' => 'NamaMahasiswa', 
      'value' => function($data) { 
       return $data->alumniintegrasi->NamaMahasiswa; 
      }, 

      /*'filter' => Html::activeDropDownList($searchModel, 'orang_ID', ArrayHelper::map(Orang::find()->asArray()->all(), 'ID', 'Nama'),['class'=>'form-control','prompt' => 'Select Category']), 
      */ 
      ], 


      'ProgramStudi', 
      'Tanggal_Masuk', 
      'Tanggal_Lulus', 

      ['class' => 'yii\grid\ActionColumn'], 
     ], 
    ]); ?> 
</div> 

und hier ist das Modell

<?php 

namespace app\models; 

use Yii; 

/** 
* This is the model class for table "alumnys2". 
* 
* @property string $NRP 
* @property string $NamaMahasiswa 
* @property string $ProgramStudi 
* @property string $Tanggal_Masuk 
* @property string $Tanggal_Lulus 
* 
* @property AlumniIntegrasi $nRP 
*/ 
class AlumnyS2 extends \yii\db\ActiveRecord 
{ 
    /** 
    * @inheritdoc 
    */ 
    public static function tableName() 
    { 
     return 'alumnys2'; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function rules() 
    { 
     return [ 
      [['NRP', 'NamaMahasiswa'], 'required'], 
      [['NRP'], 'string', 'max' => 15], 
      [['NamaMahasiswa'], 'string', 'max' => 50], 
      [['ProgramStudi'], 'string', 'max' => 5], 
      [['Tanggal_Masuk', 'Tanggal_Lulus'], 'string', 'max' => 30], 
      [['NRP'], 'exist', 'skipOnError' => true, 'targetClass' => AlumniIntegrasi::className(), 'targetAttribute' => ['NRP' => 'NRP']], 
     ]; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function attributeLabels() 
    { 
     return [ 
      'NRP' => Yii::t('app', 'Nrp'), 
      'NamaMahasiswa' => Yii::t('app', 'Nama Mahasiswa'), 
      'ProgramStudi' => Yii::t('app', 'Program Studi'), 
      'Tanggal_Masuk' => Yii::t('app', 'Tanggal Masuk'), 
      'Tanggal_Lulus' => Yii::t('app', 'Tanggal Lulus'), 
     ]; 
    } 

    /** 
    * @return \yii\db\ActiveQuery 
    */ 
    public function getNRP() 
    { 
     return $this->hasOne(AlumniIntegrasi::className(), ['NRP' => 'NRP']); 
    } 
} 

Ich möchte NamaMahasiswa in Tabelle alumniintegrasi anzuzeigen. Wie kann ich das beheben?

Antwort

0

Sie sollten den Name des Modell Getter

Veränderung in Ihrem Modell NamaMahasiswa

ein geeignetes Getter für das Feld verwenden (aviding Fall Konvention Problem für Namen

/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getNrp() 
{ 
    return $this->hasOne(AlumniIntegrasi::className(), ['NRP' => 'NRP']); 
} 

und fügen Sie den Getter einfach Verwenden Sie den Attributnamen (basierend auf Getter)

/* Getter for NamaMahasiswa */ 
public function getNamaMahasiswa() { 
    return $this->Nrp->NamaMahasiswa; 
} 

in der Ansicht

<?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'filterModel' => $searchModel, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 

      [ 
      'attribute' => 'namaMahasiswa', 
      ], 

      'ProgramStudi', 
      'Tanggal_Masuk', 
      'Tanggal_Lulus', 
      ['class' => 'yii\grid\ActionColumn'], 
     ], 
    ]); ?> 

NB UpperCamleCase (Pascal Notation) für die Datenbanknamen verwendet, ist nicht die beste Wahl .. für Datenbank eine bessere Nutzung Strich notattion ..

ist
Verwandte Themen