如何在yii2中使用参数构造或初始化activerecord对象?

如何在yii2中使用参数构造或初始化activerecord对象?,activerecord,constructor,yii2,initialization,init,Activerecord,Constructor,Yii2,Initialization,Init,假设我想使用一些参数构造一个“player”activerecord对象。如何传递参数?一些文章建议不要重写_构造方法,而是使用init()函数,该函数应该在构造方法的末尾进行内部调用。但是如何传递参数来初始化对象呢? 如果我将参数传递给构造函数,它会抱怨我: app\models\Player::init(app\models\Game$Game)的声明应 与yii\db\BaseActiveRecord::init()兼容 代码如下所示: 控制器: $game = Game::findOne

假设我想使用一些参数构造一个“player”activerecord对象。如何传递参数?一些文章建议不要重写_构造方法,而是使用init()函数,该函数应该在构造方法的末尾进行内部调用。但是如何传递参数来初始化对象呢? 如果我将参数传递给构造函数,它会抱怨我:

app\models\Player::init(app\models\Game$Game)的声明应 与yii\db\BaseActiveRecord::init()兼容

代码如下所示:

控制器:

$game = Game::findOne($id);
$player = new Player($game);
型号:

public function init(Game $game) {
    $this->game_id = $game->id;
}

扩展
BaseObject
的每个对象都可以使用


例如:您可以通过传递带有对象属性参数的数组来构造
Player
Game
对象,如
$Game=newgame(['Player\u id'=>1])

您不能将参数传递给
init()
(此方法在内部调用,并且具有指定的签名),您需要在构造函数中执行此操作(或通过setter)好的,我明白了!非常感谢!如果你把答案放在答案部分,我会给你的答案打分。