相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
相關(guān)文章、關(guān)聯(lián)文章、產(chǎn)品功能開發(fā)方案
內(nèi)容管理系統(tǒng),如文章管理、產(chǎn)品管理的時候,經(jīng)常會出現(xiàn)這樣的場景:某篇文章為系列文章,或者為系列產(chǎn)品,然后需要這個系列的文章/產(chǎn)品在展示的時候,展示出同系列的文章或者產(chǎn)品。同時,在后臺管理的時候,需要在有關(guān)聯(lián)關(guān)系后,能對關(guān)聯(lián)關(guān)系進行管理(增刪改查)。
這樣的需求,因為考慮到信息維護的唯一性,原計劃是新增數(shù)據(jù)表,用中間數(shù)據(jù)表對關(guān)鍵結(jié)構(gòu)進行存儲管理,這樣更規(guī)范,也不用對原來的文章數(shù)據(jù)進行破壞,不增加大數(shù)據(jù)量的文章表字段。不過后來考慮到后期在管理的時候,工程量開發(fā)更大,就拋棄了這個方案。
還是用最簡單的方案,在文章數(shù)據(jù)表增加關(guān)聯(lián)文章的字段,字段以數(shù)組形式存儲關(guān)聯(lián)文章的ID,給予的排序序號;
新增關(guān)聯(lián)的時候,對每個關(guān)聯(lián)的文章插入字段;
修改的時候,也對每個關(guān)聯(lián)的文章插入字段;
刪除的時候,對前面已有的文章,也清空字段;
備注:此處,僅考慮一對多關(guān)聯(lián),或者說只考慮并集的情況,不考慮交集情況,即,A關(guān)聯(lián)B、C,關(guān)聯(lián)后,ABC的關(guān)聯(lián)性一致,不存在B關(guān)聯(lián)除AC之外的其他項,不再關(guān)聯(lián)D,如果有更多的關(guān)聯(lián)需求,則需要使用TAG標(biāo)簽完成,此處不考慮;
為減少工作量,以函數(shù)封裝:
輸入?yún)?shù)
修改關(guān)聯(lián)數(shù)組 數(shù)組形式(參數(shù)1 序號 參數(shù)2 ID) 必填
原始關(guān)聯(lián)數(shù)組 數(shù)組形式 選填 默認為空
數(shù)據(jù)表名稱 文本形式 string 選填 默認為article
輸出參數(shù)
輸出 false/true
函數(shù)處理思路
在新增文章或者說新增關(guān)聯(lián)文章的時候,即原來的文章或者新增的文章的關(guān)聯(lián)字段為空,則接下來的操作都為批量update操作
如果原始關(guān)聯(lián)數(shù)組不為空,則需要對原始關(guān)聯(lián)數(shù)組進行循環(huán),然后對對應(yīng)的文章字段進行刪除,然后再開始修改操作
開始修改操作,對修改關(guān)聯(lián)數(shù)組進行循環(huán),然后對對應(yīng)的文章字段進行修改操作;
修改完畢,返回true
最終實現(xiàn)的功能圖如下,在實際開發(fā)過程中,還是遇到了一些問題,例如數(shù)組排序、在編輯頁面實現(xiàn)ajax獲取文章列表,ajax搜索文章、重復(fù)數(shù)據(jù)剔除等等。
彈出相關(guān)文章插入窗口,并搜索相關(guān)文章
插入相關(guān)文章\關(guān)聯(lián)文章后的顯示,前面打鉤去掉,則不關(guān)聯(lián)