我想根据用户输入检测数据库中的更改。实际上,我应该通过id检测数据库中的新值或现有值。
基本上,我希望动态检测最新用户输入的更新,并消除未被触及的更新。
例子:
-
技能集-A、B、C(因为是新的,所以插入)
-
更新时,技能集(B、C、D)
-
我将删除A并插入D,而不是更新B和C
我的数据库存储了每种技能的每行数据。
例子:
-
用户A-技能A
-
用户A-技能B
-
用户A-技能C
-
用户B-技能A
-
用户B-技能B
表格:
$skills = (new \yii\db\Query())
->select(['id', 'name'])
->from('skillset')
->all();
foreach ($skills as $skill) {
echo "<br/><input type='checkbox' name=\"skill[]\" value='$skill[id]' /> $skill[name]<br>";
}
}
?>
<br/>
<div class="form-group" style="float:right">
<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
</div>
控制器:
$skills = Yii::$app->request->post('skill');
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
foreach ($skills as $skill) {
Yii::$app->db->createCommand()
->insert('skillsetassignment', [
'staff_id' => $id,
'skillset_id' => $skill,
])->execute();
}
}
Yii2中是否有处理此类情况的内置方法?