1
私はそれらの間に関係がある「コンポーネント」を持っています。他のコンポーネントに関する情報を「更新」したい場合、関連する「コンポーネント」とその関係を削除する必要があります DB内の行を削除する
。 actionUpdateでは私が持っている:コンポーネントへ
public function actionUpdate($id) {
$model = Component::find()->where(['id' => $id])->one();
$tractorModels = ArrayHelper::map(Tractormodel::find()->all(), 'id', 'model');
$components = Component::find()->all();
$depModels = Dependency::find()->where(['component_id' => $id])->all();
$deletedIDs = Yii::$app->request->post("deletedIds");
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$dependendComponents = Yii::$app->request->bodyParams['ids'];
foreach ($dependendComponents as $dComp) {
$dependencyModel = new Dependency();
$dependencyModel->setAttributes([
'count' => $dComp['quantity'],
'component_id' => $model->id,
'dependent_id' => $dComp['id']
]);
$dependencyModel->save();
}
if ($deletedIDs && is_array($deletedIDs)) {
Dependency::deleteAll(['id' => Yii::$app->request->post()["deletedIds"]]);
}
return $this->redirect(['index', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model, 'tractorModels' => $tractorModels,
'components' => $components, 'depModels' => $depModels,
]);
}
}
とビューで私はID(deletedIDs)で配列内の削除済みアイテムを取得するためのjQueryを使用して、関係および関連を削除するには、「アイテム」
wrapper.on("click", ".remove_field", function (e) {
var wantedDiv = $(this).parent('div').children().first();
var selectTag = $(wantedDiv).find('select');
var clickedId = $(selectTag).find('[selected=""]').attr('value');
var deletedIdsArray = $('#deletedIDs');
console.log($('#deletedIDs'));
if (clickedId) {
$('#deletedIds').append('<input type="hidden" name="deletedIds[]" value="' + clickedId + '">');
}
e.preventDefault();
$(this).parent('div').remove();
x--;
});
すべては「理論」でOKですが、コンポーネントは
if ($deletedIDs && is_array($deletedIDs)) {
Dependency::deleteAll(['IN', 'id', $deletedIDs]);
}
仕事、と私は($ deletedIDsを)のvar_dump場合、私は見て、DBに削除いけない やアイテムを持つ配列を得ました削除したいのですが、削除するときに「アイテム」に関連するコンポーネントは消えません。誰かが私が逃したものを教えてくれる?
を配列であり、複数のIDが含まれています(私は自分自身を試してみましたが、 'deleteAll'方法は私には正常に動作し、それはおそらくあなたのケースで動作しますので、。あまりにも)。あなたが試みることができるのは 'try'を使って例外を得ることです(何が間違っているかを見るために)。 –
私はそれを試してみましたが、データベース、var_dumpの作業でそれらを削除していないので、それらを捕まえて削除するつもりですが、実際には削除しないでください。要素を削除したいので、何かを見逃していると思いますが、何が分かりません)。そして、はい、配列は、私が削除したい各 "コンポーネント"からすべてのIDを作成します。 アレイ(3){ [0] => ストリング(2) "15" [1] => ストリング(2) "13" [2] => ストリング(2) "16" } – RosS
[OK]をクリックし、データベースから直接行を削除して、それが可能かどうかを確認してください。 –