如何在yii2中使用参数构造或初始化activerecord对象?
假设我想使用一些参数构造一个“player”activerecord对象。如何传递参数?一些文章建议不要重写_构造方法,而是使用init()函数,该函数应该在构造方法的末尾进行内部调用。但是如何传递参数来初始化对象呢? 如果我将参数传递给构造函数,它会抱怨我: app\models\Player::init(app\models\Game$Game)的声明应 与yii\db\BaseActiveRecord::init()兼容 代码如下所示: 控制器:如何在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
$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)好的,我明白了!非常感谢!如果你把答案放在答案部分,我会给你的答案打分。