如果我有像Stackoverflow这样的标签系统.我可以添加标签,保存和删除标签,或添加新标签.
例如,最初:
PHP, JQUERY, ARRAYS
Run Code Online (Sandbox Code Playgroud)
保存问题和发布,
我改变主意了,我会删除JQUERY,所以我把我的问题编辑成只有两个标签:
PHP, ARRAYS
Run Code Online (Sandbox Code Playgroud)
我的问题是:插入后从数据库中删除标记的最佳方法是什么?我需要检查删除了哪个标签.
任何的想法?谢谢!
澄清问题:
我有一张很多桌子
$first = array (php, jquery, arrays)
question1 | php
question1 | jquery
question1 | arrays
Run Code Online (Sandbox Code Playgroud)
编辑后,我将(目标):
$first = array (php, jquery)
question1 | php
question1 | jquery
Run Code Online (Sandbox Code Playgroud)
添加新标签很容易.独特的约束,foreach解决了这个问题.但要删除标签.我需要从联结表中删除特定的标记数组.
问题是如何?
所以,我有这个数组: $first = array (php, jquery)
和这个表结构(这是问题):
question1 | php
question1 | jquery
question1 | arrays
Run Code Online (Sandbox Code Playgroud)
这最好是作为多对多关系实现的.
您可以使用联结表执行此操作.例如
QUESTION
========
id, -- primary key
whatever
TAG
===
id, -- primary key
tag -- probably best with UNIQUE constraint
QUESTION_TAG
============
question_id, -- composite primary key, foreign key references QUESTION (id)
tag_id -- composite primary key, foreign key references TAG (id)
Run Code Online (Sandbox Code Playgroud)
要删除问题的标记,只需从QUESTION_TAG表中删除记录,例如
DELETE FROM `QUESTION_TAG`
WHERE `question_id` = :question_id
AND `tag_id` = :tag_id
Run Code Online (Sandbox Code Playgroud)
您最好的选择是将标记删除作为可捕获的事件.我的意思是每次删除都以某种方式处理,以便您能够捕获要删除的标记.
另一种方法是删除问题的所有QUESTION_TAG条目,然后重新插入标记以保留.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |