0

これは私を夢中にさせています..

CI 2.1.3 を新規インストールしました。
ここから MY_Model をコピーしました: https://github.com/jamierumbelow/codeigniter-base-model から application/core へ。
autoload.phpに自動ロードされたデータベースライブラリ config フォルダー内の database.php を適切に構成しました。

以下のように MY_Model クラスを拡張します。

class User_m extends MY_Model{ 

    public $_table = 'user';
    public $primary_key = 'user_id';

}

そして、デフォルトのコントローラーでは:

$this->load->model('user_m', 'user');

$row = $this->user->get(1);
echo $row->email;

これは、CRUD ライブラリがどのように機能するかを確認するための最も簡単な実装ですが、次のエラーが発生します。

Fatal error: Call to a member function where() on a non-object in MY_Model.php on line 135  

MY_Model.php の 135 行目:

$row = $this->_database->where($this->primary_key, $primary_value)
                        ->get($this->_table)
                        ->{$this->_return_type()}();
4

1 に答える 1

1
if (!$this->_db)
{
    $this->_database = $this->load->database();
}

$this->load->database(); からデータベース オブジェクトは返されません。

CI ドキュメントから:

/**  
 * Database Loader  
 *  
 * @param    mixed   $params     Database configuration options  
 * @param    bool    $return     Whether to return the database object  
 * @param    bool    $query_builder  Whether to enable Query Builder  
 *                   (overrides the configuration setting)  
 *  
 * @return   void|object|bool    Database object if $return is set to TRUE,  
 *                   FALSE on failure, void in any other case  
 */  
 public function database($params = '', $return = FALSE, $query_builder = NULL) 

試す:

if ( $this->db ) {
    $this->_database = $this->db;
} else {
    $this->_database = $this->load->database('default', true, true);
}

その後の編集:
そのモデルの修正版を見つけました。コアモデルをこれに置き換えます

于 2013-03-03T15:25:11.740 に答える