2016-03-24 9 views
3

mariadbビューのgiiを使用してモデルを生成しました。Yii2のGiiを使用してデータベースビューからCRUDを作成

は、次にモデルのGIIのCRUDジェネレータを使用しようと、私は、ビューがPKを持っていないように完全に理解され、エラー

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

を取得します。私は、idは、実際のビューの一部であり、基礎となる表でPK、ある列名された状態で

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ジェネレータを使用することを可能にし、また、「未定義のインデックス:I」の世話をする必要がありますエラー。

2

シンプルモデルクラスに追加

public static function primaryKey() 
{ 
    return ['id']; 
} 
関連する問題