Почему я не могу создать CRUD с GII в Yii2

Я сделал таблицу просмотра с функцией «присоединиться» в sql. но когда я пытался сгенерировать таблицу просмотра с помощью gii, было сказано, что «Таблица, связанная с Rangkuman, должна иметь первичный ключ», и я создал первичный ключ с таблицей, связанной с Rangkuman. Но все равно будь как эта картинка

введите здесь описание изображения

Вот модель Рангкумана

<?php

namespace app\models;

use Yii;

/**
 * This is the model class for table "rangkuman".
 *
 * @property string $Fakultas
 * @property string $Departemen
 * @property string $KodeMayor
 * @property string $NIM
 * @property integer $TahunMasuk
 * @property integer $JenisKelamin
 * @property integer $StatusAkademik
 * @property string $Usia
 */
class Rangkuman extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'rangkuman';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['Fakultas', 'Departemen', 'NIM', 'JenisKelamin'], 'required'],
            [['TahunMasuk', 'JenisKelamin', 'StatusAkademik', 'Usia'], 'integer'],
            [['Fakultas', 'Departemen'], 'string', 'max' => 5],
            [['KodeMayor'], 'string', 'max' => 10],
            [['NIM'], 'string', 'max' => 11],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'Fakultas' => Yii::t('app', 'Fakultas'),
            'Departemen' => Yii::t('app', 'Departemen'),
            'KodeMayor' => Yii::t('app', 'Kode Mayor'),
            'NIM' => Yii::t('app', 'Nim'),
            'TahunMasuk' => Yii::t('app', 'Tahun Masuk'),
            'JenisKelamin' => Yii::t('app', 'Jenis Kelamin'),
            'StatusAkademik' => Yii::t('app', 'Status Akademik'),
            'Usia' => Yii::t('app', 'Usia'),
        ];
    }
}

а вот sql код

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `rangkuman` AS select `dbintegrasi`.`ipbmst_fakultas`.`Kode` AS `Fakultas`,
`dbintegrasi`.`ipbmst_departemen`.`Kode` AS `Departemen`,
`dbintegrasi`.`akdmst_mayor`.`Kode` AS `KodeMayor`,
`dbintegrasi`.`akdmst_mahasiswadoktor`.`NIM` AS `NIM`,
`dbintegrasi`.`akdmst_mahasiswadoktor`.`TahunMasuk` AS `TahunMasuk`,
`dbintegrasi`.`ipbmst_orang`.`JenisKelaminID` AS `JenisKelamin`,
`dbintegrasi`.`akdmst_mahasiswadoktor`.`StatusAkademikID` AS `StatusAkademik`,
timestampdiff(YEAR,`dbintegrasi`.`ipbmst_orang`.`TanggalLahir`,now()) AS `Usia`  
from (((((`dbintegrasi`.`akdmst_mahasiswadoktor` join `dbintegrasi`.`akdmst_mayor`
on((`dbintegrasi`.`akdmst_mahasiswadoktor`.`MayorID` = `dbintegrasi`.`akdmst_mayor`.`ID`))) 
join `dbintegrasi`.`ipbmst_departemen` on((`dbintegrasi`.`akdmst_mayor`.`DepartemenID` = `dbintegrasi`.`ipbmst_departemen`.`ID`))) 
join `dbintegrasi`.`ipbmst_fakultas` on((`dbintegrasi`.`ipbmst_departemen`.`FakultasID` = `dbintegrasi`.`ipbmst_fakultas`.`ID`))) 
join `dbintegrasi`.`ipbmst_orang` on((`dbintegrasi`.`akdmst_mahasiswadoktor`.`NIM` = `dbintegrasi`.`ipbmst_orang`.`NIMS3Key`))) 
join `dbintegrasi`.`akdref_statusakademik` on((`dbintegrasi`.`akdmst_mahasiswadoktor`.`StatusAkademikID` = `dbintegrasi`.`akdref_statusakademik`.`ID`)))
join `dbintegrasi`.`ipbref_jeniskelamin` on((`dbintegrasi`.`ipbmst_orang`.`JenisKelaminID` = `dbintegrasi`.`ipbref_jeniskelamin`.`ID`));

Что я должен делать? Спасибо


person dewinataria    schedule 28.02.2017    source источник
comment
какой столбец является первичным ключом?   -  person Ripper    schedule 28.02.2017
comment
Я нашел ответ. Я набрал публичную статическую функцию primaryKey() { return array('NIM'); }   -  person dewinataria    schedule 28.02.2017