Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在加载对象/创建对象yii时设置基类属性值_Php_Yii_Base Class - Fatal编程技术网

Php 在加载对象/创建对象yii时设置基类属性值

Php 在加载对象/创建对象yii时设置基类属性值,php,yii,base-class,Php,Yii,Base Class,我有两个从公共基类继承的模型 class Batsmen extends CPlayer{ batsmen_id // model field. batsmen_name // model field. } class Bowler extends CPlayer{ bowler_id // model field. bowler_name // model field. } //组件类,用作击球手和投球手模型的基类

我有两个从公共基类继承的模型

class Batsmen extends CPlayer{
    batsmen_id      // model field.
    batsmen_name    // model field.
}

class Bowler extends CPlayer{
    bowler_id       // model field.
    bowler_name     // model field.    
}
//组件类,用作击球手和投球手模型的基类

class CPlayer extends CActiveRecord{
    public player_id;
    public player_name;
}

我想在加载对象时或创建对象后,将击球手/投球手的属性值加载到基类CPlayer属性中。如何执行此操作?

如果要在模型加载后将击球手id设置为球员id,请使用afterFind方法:

protected function afterFind(){
  parent::afterFind();
  $this->player_id = $this->batsmen_id;
}
如果您只是初始化对象,请使用init

public function init(){
  parent::init();
  $this->player_id = $this->batsmen_id;
}

是的,我试过用afterFind。但它不会在我执行findByPk之后调用该事件。默认情况下,findByPk总是在find事件之后出现。所以在你的类逻辑中可能有错误。这是我的错误,我使用了onAfterFind而不是afterFind。但是对于init(),我创建了一个新对象并保存了它,但没有设置父属性的值。
create object!=保存型号
:)在afterSave中进行分配。带有on*的方法以另一种方式使用。