鍍金池/ 問(wèn)答/Java  PHP  Python  HTML/ 一對(duì)多的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu),怎么修改?

一對(duì)多的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu),怎么修改?

問(wèn)題是這樣的,兩個(gè)關(guān)聯(lián)表。
數(shù)據(jù)結(jié)構(gòu)是類似于微博這樣的:內(nèi)容+N張圖片
我分了兩個(gè)表,一個(gè)表記錄內(nèi)容,另一個(gè)表記錄圖片,通過(guò)內(nèi)容的ID關(guān)聯(lián)
也就是HAS_MANY的relation關(guān)系
然后我想在前端進(jìn)行圖片的增刪改
我想過(guò)兩種方式:
1、全刪全寫的方式,也就是每次圖片列表有了修改,提交到后端就把舊的全部刪掉,然后把新的寫進(jìn)去。
2、前端記錄刪除的ID和新增的數(shù)據(jù),傳到后端做刪除和新增兩步操作
我想知道一般是采用什么方式進(jìn)行刪改??

回答
編輯回答
哚蕾咪

之前也做過(guò)類似的功能,我的思路大概是這樣的:

  1. 添加圖片的時(shí)候,把添加的圖片路徑(圖片信息參數(shù)等)存儲(chǔ)在input的name為already_photo[]的隱藏域中
  2. 修改的時(shí)候,把已經(jīng)存在的圖片路徑取出來(lái),放置在這個(gè)隱藏域中,然后在修改的時(shí)候,替換(添加)了新的圖片也放在隱藏域中
  3. 提交整個(gè)表單的時(shí)候,用array_diff這個(gè)函數(shù)作對(duì)比,與前端文本域和數(shù)據(jù)庫(kù)的圖片數(shù)據(jù)作對(duì)比。要對(duì)比兩次,需要找到添加的和刪除的文件,該刪除的刪除掉數(shù)據(jù)庫(kù)信息,并刪除資源文件,該添加的就添加

這樣的好處是,你在添加的時(shí)候,就算替換了多次,也能得到不需要的文件信息,在提交表單的時(shí)候,通過(guò)對(duì)比,可以刪除對(duì)應(yīng)的資源文件,減少服務(wù)器上的多余資源。

2017年10月27日 17:06
編輯回答
嫑吢丕

你的圖片表不要留主鍵 ,只留兩個(gè)圖片的路徑和內(nèi)容id關(guān)聯(lián)就好了,這樣你刪除的時(shí)候非常方便,修改的時(shí)候就是直接刪除這個(gè)圖片表的內(nèi)容關(guān)聯(lián)數(shù)據(jù),然后再添加就好了

2018年6月3日 00:13
編輯回答
風(fēng)清揚(yáng)

這種的實(shí)質(zhì)是內(nèi)容中插入圖片,而圖片可以用id鏈接到實(shí)體,實(shí)體看怎么存儲(chǔ)啦,但內(nèi)容的修改和插入位置的修改是全面更新的,圖片增加其實(shí)就是在圖片庫(kù)中添加一個(gè)id而已,刪除則不一定刪除實(shí)體(當(dāng)然也可以刪除,看具體圖片如何存儲(chǔ)),但這內(nèi)容中沒(méi)有了圖片id的引用而已。這樣可能是大多數(shù)處理方法。
不知道你所謂的修改是什么?前端怎么對(duì)圖片修改后保存到后端?

2017年8月22日 10:26