2014-12-07 77 views
0

我創建Joomla3組件,我需要在安裝過程中創建一些虛擬內容,我知道我可以使用sql文件來填充表,但是這主要適用於自定義創建的表,我的組件。問題出現在我想向#__content表添加內容時,'別名'列不被認爲是唯一的,並且如果有人嘗試多次安裝組件,則可能會出現重複條目​​。 我想知道什麼是插入記錄到#__content表中的最佳方式,而不必擔心重複條目等附帶損害。 謝謝大家!爲Joomla3組件創建虛擬內容

回答

1

解決方案1: 您可以使用INSERT IGNORE,以便多次安裝擴展時不會擔心重複條目。

解決方案2: 在Joomla中有一個組件可以提供的腳本文件。

因此,當擴展安裝/更新/卸載時,joomla會觸發或調用擴展腳本文件中提供的某些預定義函數,如安裝,更新,預檢,postflight等。

您可以在擴展腳本添加install method和執行這種方法這個SQL文件,以便這不會對擴展的更新情況被稱爲

解決方案3: 您可以在數據庫中該保持一個單獨的表任務,並且當您執行此虛擬內容創建時,您可以在數據庫中標記此內容,並且您還可以在啓動虛擬內容創建之前檢查此步驟是否已完成,以便有人多次安裝此擴展時,此檢查將阻止相同的任務一次又一次執行。

+0

解決方案1.恐怕這不起作用,因爲檢查重複項的唯一列是主鍵'id',並且我在沒有此字段的情況下插入新記錄(有自動增量,所以會自動創建)。由於「別名」字段不受UNIQUE限制,因此不會爲IGNORE指令創建任何錯誤消息,最終它將使用相同的數據創建額外的記錄。 我想我會用類似於解決方案3的東西,我需要檢查,如果這個數據導入過程已經執行,然後決定做什麼。 感謝您的幫助! – ArturoO 2014-12-07 18:41:56

+0

插入忽略將只與唯一列一起工作,因此如果表中沒有唯一比此解決方案獨立的列不適用於您。 很高興幫助:) – Nick 2014-12-08 04:20:22