我已经使用mariadb视图的gii生成了一个模型,该模型起作用了。
然后尝试为模型使用gii CRUD生成器,我得到了错误
The table associated with app\models\Future must have primary key(s).
Run Code Online (Sandbox Code Playgroud)
这是完全可以理解的,因为视图没有PK。我发现一些建议说要向模型中添加primaryKey函数,所以我尝试了
public function primaryKey()
{
return 'id';
}
Run Code Online (Sandbox Code Playgroud)
id是列名,实际上是基础表(它是视图的一部分)中的PK。但这失败了,但有例外
Cannot make static method yii\db\ActiveRecord::primaryKey() non static in class app\models\Future
Run Code Online (Sandbox Code Playgroud)
所以我尝试将方法设为静态,但随后引发新异常
Undefined index: i
1. in /home/adrian/projects/mtview/mtview/vendor/yiisoft/yii2-gii/generators/crud/Generator.php at line 509
Run Code Online (Sandbox Code Playgroud)
有没有解决的办法,还是现在无法使用gii为数据库视图生成代码?
简单添加到您的Model类
public static function primaryKey()
{
return ['id'];
}
Run Code Online (Sandbox Code Playgroud)