我正在制作类似在线餐厅菜单的内容,管理员可以在其中进行编辑。
数据库如下所示:
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的食物,因此意味着食物被删除。 如何删除?
是否有内置功能检测哪些条目未被修改?
对不起,这个问题很长。如果它让您感到困惑,请询问澄清。
由于
答案 0 :(得分:0)
我通过在保存新条目之前删除所有旧条目来解决它。
这可能不是最好的做法,但是......哦,好吧。