有没有办法将一些配置注入到数据提供程序模型中?
例如,我在活动记录上有这个吸气器设置器
private $_uid
public function getUid(){
return $this->_uid;
}
public function setUid($uid){
$this->_uid = $uid;
}
UID 不在表中,需要设置。
$model = new Model(['uid'=>5]);
或
$model = Model::findOne();
$model->uid = 5;
目前我正在使用getModels((来做这件事
$query = Model::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
foreach ($dataProvider->getModels() as &$models) {
$models->uid = 5;
}
这行得通。但是,我正在寻找更"干净"的方式来做到这一点?
我正在阅读有关依赖注入的信息,听起来我可以做到这一点,但是我对这个概念很陌生,无法使其工作。
此问题的可能解决方案之一是:
Event::on(Model::className(), ActiveRecord::EVENT_AFTER_FIND, function ($event) {
$event->sender->uid = 5;
});
更新:
此任务的@SakuraiEvs
这里的 uid 用于指示用户 ID,在前端我可以使用 Yii::$app->user->id 但在后端它需要从其他变量设置 因为 Yii::$app->user->id 是管理员 ID。我在这里的实际用例是 模拟用户会话视图的后端网格视图。
我更喜欢在循环中使用自定义值填充模型。覆盖populate()
或使用 PHP 可调用注入是开销。