【问题标题】:How to update mysql mapping table which contains id mapping of two different table如何更新包含两个不同表的id映射的mysql映射表
【发布时间】:2017-04-05 17:44:51
【问题描述】:

我有两个表一个是 blog_posts 另一个类别

id     | post_name
------ | ------
1      | title1  
2      | title2

id     | category_name
------ | ------
1      | category1  
2      | category2

对于帖子和类别的映射,我正在使用另一个表格,例如

id     | post_id | category_id
------ | ------- | -----------
1      |    1    |     2
2      |    2    |     1
3      |    2    |     2

所以现在当我更新帖子并为帖子选择一些不同的类别 ID 时,我应该如何更新映射表?

我使用的是删除当前正在编辑的帖子的所有映射记录,然后将选定的类别 ID 和帖子 ID 重新插入到映射表中,这种方法是最佳做法吗?请分享你的想法。 谢谢

【问题讨论】:

  • 使用 post_id, new category_id 为每个选择的新类别在映射表中添加一个新行
  • 这种方法通常用于简化流程,因此您不必识别新的和已删除的类别
  • 代替 UPDATE 或 INSERT 使用 REPLACE 查询在表中创建记录。如果记录不存在,REPLACE 将创建记录
  • 当您选择不同的类别时,首先获取该帖子的所有存储类别。之后为数据库帖子类别和表单帖子类别创建数组。在采取差异删除类别表单后,未选择但存储在数据库中。用于插入所选帖子类别和数据库帖子类别的差异。例如,您可以检查答案。

标签: php mysql


【解决方案1】:

例如:

$post_id = "2";

$db_categories = array('1', '2');

$select_categories = array('1', '3');

$delete_post_categories = array_diff($db_categories, $select_categories); //to delete result array('2')

$insert_posr_categories = array_diff($select_categories, $db_categories); //to insert result array('3')

print_r($delete_post_categories);
print_r($insert_posr_categories);

【讨论】:

  • @devsourav 如果我的回答对您有用,请点赞。谢谢。
  • 我试过了,但我的声誉低于 15 :) 所以 stackoverflow 不允许我这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2010-12-12
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
相关资源
最近更新 更多