2017-08-04 60 views
0

我們知道codeigniter允許我們使用表的前綴,我們需要在database.php文件中定義前綴。但是,我想要做一些不同的事情。我有一個腳本和任何將要安裝它的用戶,安裝頁面將詢問典型的配置設置,包括用戶是否希望在表可以安裝數據庫之前使用任何前綴。我想將該前綴存儲在設置表中,並希望從數據庫(「設置」表)獲取前綴,而不是在database.php中定義前綴。 WordPress的安裝時間相同。任何時候,我們甚至可以隨時在Wordpress中更改前綴。處理表前綴沒有任何數據庫配置文件

這樣我的用戶(誰是我的腳本的買家)誰可能不是程序員,他們應該能夠隨時輕鬆更改他們的表前綴通過管理員端。

我不希望他們更改配置文件的前綴。

如果我將在任何表中存儲前綴,那麼前綴也將應用於該表(以上情況設置表將成爲prefix_settings),然後獲取(通過查詢)存儲在設置表中的更新的前綴我需要知道什麼是前綴,因爲設置表也有該新的前綴:)

注意:這不僅限於Codeigniter。這是任何有數據庫的網站的一般問題。我只是在CI的一個項目上工作,所以給出了CI如何處理前綴的例子。

回答

0

你可以在ci中手動設置數據庫前綴。試一試

  1. 創建一個表,所有用戶設置數據將可用。如

    //user_setting table columns 
    id, user_id, db_prefix, site_url, ......., 
    
  2. 現在得到來自用戶設置表的所有設置數據,其中用戶db_prefix也可用。

示例查詢:"SELECT * FROM user_setting WHERE user_id = 105"

  • 現在使用的設置數據。

    // For example, say it is $setting['db_prefix'] 
    
    if(!empty($setting['db_prefix'])){ 
        $this->db->set_dbprefix('newprefix'); 
        $db_prefix = $this->db->dbprefix('tablename'); 
    }else{ 
        $db_prefix = ''; 
    } 
    
  • 現在CONCAT $db_prefix您的表名。希望它能起作用。

    +0

    其實我想要一個解決方案,其中前綴來自數據庫。在我已經知道的CI場景中,需要在數據庫文件中添加前綴或者我們可以通過代碼設置。但我想從管理面板給這個選項。希望它是有道理的。 – 99Points

    +0

    這就是爲什麼我提到你從admin獲取db_prefix的原因,我以$ setting ['db_prefix'])爲例。不過,我更詳細地解釋了我的答案。希望它能幫到你 –

    +0

    所以在上面的場景中,用戶設置表不會有任何前綴嗎?如果我們必須更改前綴,我們將替換所有其他表的前綴,但設置表將沒有前綴,因爲我們需要該表來獲取它自己的前綴。這個解決方案很好,但我想要一些像Wordpress的東西,我不知道他們是如何做的。他們都有相同的前綴表。即使是存有前綴值的那個。 – 99Points

    0

    在你的config/database.php中會有所謂

    'dbprefix' => 'userDefinedPrefix', 
    

    設置你在它的前綴參數,現在你可以在模型中使用它

    $this->anyName = $this->db->dbprefix('table_name'); 
    
    +0

    我想我不能把問題放在明確的方式:( – 99Points

    相關問題