多対多テーブルで作業していて、レコードを取得できなかった問題を修正しました。今、私はそれが必要なときにレコードを削除しようとしています。関連付けられたテーブルからレコードを削除するPHP
子供がイベントに関連付けられるサイトがあります。子供が誤って追加された場合、私はその子供を取り除きたいと思っています。それらはチェックボックスを介して次のように追加されます:
<input type="checkbox" name="eventChildren[]" id="childId_12" />
<input type="checkbox" name="eventChildren[]" id="childId_13" />
<input type="checkbox" name="eventChildren[]" id="childId_14" />
私は子が既に追加されている場合、複数のチェックボックスがチェックされています。
私は3つのテーブル(これは関連性があるかどうかわからない)持っている:私は私が私のeventChildren
テーブルに重複を追加しないことを確認するチェックをやっているレコードを保存すると
DB:
- children
- events
- eventChildren
を。レコードがすでにデータベースにあり、フォームから送信されていない場合は、子がリストから削除されていることがわかります。このサブセットをどのように捕捉するのか分かりません。
例コード:
// $eventChildren comes from the form above name="eventChildren[]"
// $eventId is passed into the function
$currentChildren = $this->eventChildren->GetEventChildren(array('eventId' => $eventId));
// Loop through all submitted children
foreach ($eventChildren as $childId)
{
// Loop through all existing children
foreach ($currentChildren as $currChild)
{
// If the child ID's do not match then it's a new record
if ($currChild->childId != $childId)
{
$this->eventChildren->AddEventChildren(array(
'eventId' => $eventId,
'childId' => $childId
));
}
}
}
フォームが送信されると、私はeventId
試合eventChildren
テーブルからすべてのレコードをつかむリターンを得ます。私はsubmittedChildren
配列に基づいて、言うことができるどのよう
eventChildren (return)
- [0]
eventChildrenId => 1
childId => 12
eventId => 4
- [1]
eventChildrenId => 2
childId => 13
eventId => 4
- [2]
eventChildrenId => 3
childId => 14
eventId => 4
submittedChildren
- [0] => 12
- [1] => 13
eventChildrenId = 3
レコードを削除しますか?
これは意味があると思います。 :)
これらのより良い方法は何ですか?私が使用している現在の方法は、実際には働いていません.2つのIDが8と10の2つのIDを持っているからです。10が8のときは、等しくないので、新しいレコードを追加します。 – Seth