2016-03-24 1 views
3

J'ai généré un modèle en utilisant gii d'une vue mariadb, qui a fonctionné.Créer un CRUD à partir d'une vue de base de données en utilisant Gii dans Yii2

Ensuite, essayez d'utiliser le générateur de CRUD GII pour le modèle, je reçois l'erreur

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

Ce qui est parfaitement compréhensible que la vue ne dispose pas d'un PK. J'ai trouvé quelques conseils qui dit d'ajouter une fonction de primaryKey au modèle alors j'ai essayé

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

Avec id étant le nom de la colonne qui est en fait le PK dans la table sous-jacente, qui fait partie de la vue. Mais cela ne fonctionne pas avec une exception

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

J'ai essayé de faire la méthode statique, mais il lance alors une nouvelle exception

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

Y at-il un moyen de contourner cela, ou est-il maintenant impossible d'utiliser GII pour générer code pour les vues de base de données?

Répondre

-1

La solution la plus simple qui me vient à l'esprit serait de créer une table ayant la même structure que celle que vous désirez (avec le champ de clé primaire). Utilisez cette table pour créer votre CRUD. Remplacez simplement votre table nouvellement créée par View.

2

simple ajouter à votre modèle classe

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