Muh*_*lam 2 yii2 yii2-advanced-app
我有一个名为SYSTEM_PARAMS如下的表格
+------------+------------------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+-----------------------------+
| name | varchar(50) | NO | | NULL | |
| value | varchar(100) | YES | | NULL | |
| updated_at | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| created_by | int(11) | NO | | NULL | |
| updated_by | int(11) unsigned | YES | | 0 | |
+------------+------------------+------+-----+---------------------+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
在这里,我拥有要运行的cron作业的所有名称,并且必须使用当前运行的特定作业名称来更新该值JobId,该表没有primaryKey定义,如您在上面的架构中所见,因此我primaryKey()在模型内部定义了方法像下面
public function primaryKey($asArray=FALSE) {
return 'name';
}
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误,说我可以将静态方法定义为非静态方法,在这里我做错了什么。
PHP致命错误:无法在类common \ models \ SystemParams中使静态方法yii \ db \ ActiveRecord :: primaryKey()非静态
确切地说。
primaryKey 是ActiveRecord类中的静态方法。
如果要覆盖它,则还必须使其静态。
public static function primaryKey()
{
return ['name'];
}
Run Code Online (Sandbox Code Playgroud)
PS。它必须返回数组。请参阅此注释。