架構 - thinkphp3.2 調用自訂Model類出現無法訪問的一個問題?

來源:互聯網
上載者:User

使用thinkphp3.2版本
\Home\Controller目錄下,建立TestoneController繼承了Controller,其中有一個index方法。建立了一個TestoneModel繼承了Model,設定一個test方法。兩個類如:

之後訪問Testone模組的index方法,url:
http://localhost/weixin/index.php/Home/Testone/index
報錯如下:

之後,嘗試讓TestModel不繼承Model後

再次訪問
http://localhost/weixin/index.php/Home/Testone/index
訪問成功
但是按照官方手冊,不是應該需要繼承嗎?希望能給我解答下關於命名空間也好,繼承也好,這是怎麼一回事?

回複內容:

使用thinkphp3.2版本
\Home\Controller目錄下,建立TestoneController繼承了Controller,其中有一個index方法。建立了一個TestoneModel繼承了Model,設定一個test方法。兩個類如:

之後訪問Testone模組的index方法,url:
http://localhost/weixin/index.php/Home/Testone/index
報錯如下:

之後,嘗試讓TestModel不繼承Model後

再次訪問
http://localhost/weixin/index.php/Home/Testone/index
訪問成功
但是按照官方手冊,不是應該需要繼承嗎?希望能給我解答下關於命名空間也好,繼承也好,這是怎麼一回事?

我按照你的代碼測試了一次發現沒問題,是不是因為你前面用了D方法執行個體化模型留下緩衝?

public function __construct($name='',$tablePrefix='',$connection='') {    // 模型初始化    $this->_initialize();    // 擷取模型名稱    if(!empty($name)) {        if(strpos($name,'.')) { // 支援 資料庫名.模型名的 定義            list($this->dbName,$this->name) = explode('.',$name);        }else{            $this->name   =  $name;        }    }elseif(empty($this->name)){        $this->name =   $this->getModelName();    }    // 設定表首碼    if(is_null($tablePrefix)) {// 首碼為Null表示沒有首碼        $this->tablePrefix = '';    }elseif('' != $tablePrefix) {        $this->tablePrefix = $tablePrefix;    }elseif(!isset($this->tablePrefix)){        $this->tablePrefix = C('DB_PREFIX');    }    // 資料庫初始化操作    // 擷取資料庫操作對象    // 當前模型有獨立的資料庫連接資訊    $this->db(0,empty($this->connection)?$connection:$this->connection,true);}model 的構造方法  最後串連了資料庫一般做法是一個 model 對應一個資料庫表

經過測試你的代碼沒有任何的問題:

test();    }}?>

輸出結果:


Model類在執行個體化的時候預設會連結資料庫,並且尋找和類名相同的表名,如果你在此之前沒有添加對應的表會報錯
如你的Model為:TestOneModel,資料庫應該存在:xx_test_one表.
http://www.kancloud.cn/manual/thinkphp/1728

出現這個錯誤的原因是資料庫未配置

config.php裡配置

//資料庫配置資訊'DB_TYPE'   => 'mysql', // 資料庫類型'DB_HOST'   => '127.0.0.1', // 伺服器位址'DB_NAME'   => 'thinkphp', // 資料庫名'DB_USER'   => 'root', // 使用者名稱'DB_PWD'    => '123456', // 密碼'DB_PORT'   => 3306, // 連接埠'DB_PARAMS' =>  array(), // 資料庫連接參數'DB_PREFIX' => 'think_', // 資料庫表首碼 'DB_CHARSET'=> 'utf8', // 字元集'DB_DEBUG'  =>  TRUE, // 資料庫偵錯模式 開啟後可以記錄SQL日誌

並且資料庫要有首碼_test_one

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.