0

管理者が編集できるオンライン レストラン メニューのようなものを作成しています。

データベースは次のようになります。

CATEGORIES
id   |  name
1    | Western Food

FOODS
id   | category_id | name
1    |      1      | Tenderloin
2    |      1      | Fish Chips

管理者がメニューを編集した後、すべての入力を読み取り、AJAX リクエストとして投稿します。データ (簡略化) は次のようになります。

data: [
    {Category: {id: 1, name:'Western Food'} },
    {Food: [
        {id: 1, category_id: 1, name: 'Tenderloin'}, //Have ID = edit old entry
        {category_id: 1, name: 'Burger'}, //Don't have ID = create new entry
    ]}
]

CakePHPの関数は、データ内の列saveAll()の存在に基づいて、編集中か新しいエントリの作成中かを自動的に検出するという素晴らしい仕事をしました。id

上記のように、最初はテーブルに 2 つの食品があります。しかし、新しい POST データには ID=2 の食品が含まれていないため、食品が削除されたことを意味します。どうすればそれを削除できますか?

どのエントリが変更されていないかを検出する組み込み関数はありますか?

すみません、長い質問で。混乱している場合は、説明を求めてください。

ありがとう

4

1 に答える 1

0

新しいエントリを保存する前に、古いエントリをすべて削除するだけで解決しました。

ベスト プラクティスではないかもしれませんが、まあまあ。

于 2013-06-18T03:58:36.837 に答える