2016-03-24 4 views
3

Я создал модель с использованием gii вида mariadb, который работал.Создайте CRUD из представления базы данных с помощью Gii в Yii2

Затем пытается использовать генератор GII CRUD для модели, я получаю ошибку

The table associated with app\models\Future must have primary key(s). 

что вполне понятно, так как вид не имеет ПК. Я нашел несколько советов, который говорит, чтобы добавить функцию PrimaryKey к модели, поэтому я попытался

public function primaryKey() 
{ 
    return 'id'; 
} 

с идентификатором является именем столбца, который на самом деле ПК в базовой таблице, которая является частью представления. Но это не удается с исключением

Cannot make static method yii\db\ActiveRecord::primaryKey() non static in class app\models\Future 

Так что я попытался сделать статический метод, но он бросает новое исключение

Undefined index: i 
1. in /home/adrian/projects/mtview/mtview/vendor/yiisoft/yii2-gii/generators/crud/Generator.php at line 509 

Есть ли способ обойти это, или это теперь невозможно использовать Gii для генерации код для просмотров базы данных?

ответ

-1

Простейший рабочий стол, который приходит мне на ум, будет создавать таблицу, имеющую ту же структуру, что и ваше желание (с полем первичного ключа). Используйте эту таблицу, чтобы создать свой CRUD. Теперь просто замените вновь созданную таблицу на View.

2

У меня была одна и та же проблема один раз. Вам нужно добавить функцию getPrimaryKey в класс модели.

public function getPrimaryKey($asArray=false){ 
    return "id"; 
} 

Вы можете найти более подробную информацию здесь: http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#getPrimaryKey()-detail

Это позволит вам использовать генератор CRUD, а также заботиться о «неопределенном индекса: я» ошибка.

2

Простой добавить в класс модели

public static function primaryKey() 
{ 
    return ['id']; 
}