相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢(xún)功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫(xiě)文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
相關(guān)文章、關(guān)聯(lián)文章、產(chǎn)品功能開(kāi)發(fā)方案
內(nèi)容管理系統(tǒng),如文章管理、產(chǎn)品管理的時(shí)候,經(jīng)常會(huì)出現(xiàn)這樣的場(chǎng)景:某篇文章為系列文章,或者為系列產(chǎn)品,然后需要這個(gè)系列的文章/產(chǎn)品在展示的時(shí)候,展示出同系列的文章或者產(chǎn)品。同時(shí),在后臺(tái)管理的時(shí)候,需要在有關(guān)聯(lián)關(guān)系后,能對(duì)關(guān)聯(lián)關(guān)系進(jìn)行管理(增刪改查)。
這樣的需求,因?yàn)榭紤]到信息維護(hù)的唯一性,原計(jì)劃是新增數(shù)據(jù)表,用中間數(shù)據(jù)表對(duì)關(guān)鍵結(jié)構(gòu)進(jìn)行存儲(chǔ)管理,這樣更規(guī)范,也不用對(duì)原來(lái)的文章數(shù)據(jù)進(jìn)行破壞,不增加大數(shù)據(jù)量的文章表字段。不過(guò)后來(lái)考慮到后期在管理的時(shí)候,工程量開(kāi)發(fā)更大,就拋棄了這個(gè)方案。
還是用最簡(jiǎn)單的方案,在文章數(shù)據(jù)表增加關(guān)聯(lián)文章的字段,字段以數(shù)組形式存儲(chǔ)關(guān)聯(lián)文章的ID,給予的排序序號(hào);
新增關(guān)聯(lián)的時(shí)候,對(duì)每個(gè)關(guān)聯(lián)的文章插入字段;
修改的時(shí)候,也對(duì)每個(gè)關(guān)聯(lián)的文章插入字段;
刪除的時(shí)候,對(duì)前面已有的文章,也清空字段;
備注:此處,僅考慮一對(duì)多關(guān)聯(lián),或者說(shuō)只考慮并集的情況,不考慮交集情況,即,A關(guān)聯(lián)B、C,關(guān)聯(lián)后,ABC的關(guān)聯(lián)性一致,不存在B關(guān)聯(lián)除AC之外的其他項(xiàng),不再關(guān)聯(lián)D,如果有更多的關(guān)聯(lián)需求,則需要使用TAG標(biāo)簽完成,此處不考慮;
為減少工作量,以函數(shù)封裝:
輸入?yún)?shù)
修改關(guān)聯(lián)數(shù)組 數(shù)組形式(參數(shù)1 序號(hào) 參數(shù)2 ID) 必填
原始關(guān)聯(lián)數(shù)組 數(shù)組形式 選填 默認(rèn)為空
數(shù)據(jù)表名稱(chēng) 文本形式 string 選填 默認(rèn)為article
輸出參數(shù)
輸出 false/true
函數(shù)處理思路
在新增文章或者說(shuō)新增關(guān)聯(lián)文章的時(shí)候,即原來(lái)的文章或者新增的文章的關(guān)聯(lián)字段為空,則接下來(lái)的操作都為批量update操作
如果原始關(guān)聯(lián)數(shù)組不為空,則需要對(duì)原始關(guān)聯(lián)數(shù)組進(jìn)行循環(huán),然后對(duì)對(duì)應(yīng)的文章字段進(jìn)行刪除,然后再開(kāi)始修改操作
開(kāi)始修改操作,對(duì)修改關(guān)聯(lián)數(shù)組進(jìn)行循環(huán),然后對(duì)對(duì)應(yīng)的文章字段進(jìn)行修改操作;
修改完畢,返回true
最終實(shí)現(xiàn)的功能圖如下,在實(shí)際開(kāi)發(fā)過(guò)程中,還是遇到了一些問(wèn)題,例如數(shù)組排序、在編輯頁(yè)面實(shí)現(xiàn)ajax獲取文章列表,ajax搜索文章、重復(fù)數(shù)據(jù)剔除等等。
彈出相關(guān)文章插入窗口,并搜索相關(guān)文章
插入相關(guān)文章\關(guān)聯(lián)文章后的顯示,前面打鉤去掉,則不關(guān)聯(lián)