Ste*_*ier 4 database codeigniter view
首先是Model类:
class Xxxx_model extends Model
{
function XxxxModel()
{
parent::Model();
$this->load->database();
}
function isInDatabase()
{
// Please ignore the sql query, it's just to show some random sql code with results
11. $result = $this->db->query('SELECT * FROM someTable WHERE ...');
$numberOfRows = $result->num_rows();
...
return $test;
}
}
Run Code Online (Sandbox Code Playgroud)
现在控制器:
function someLogic()
{
$this->load->model('xxxx_Model', 'xxxxModel'); // not necessary to specify
$this->xxxxModel->isInDatabase();
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到错误:
Severity: Notice --> Undefined property: Xxxx_model::$db .../xxxx_model.php line 11
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样.如果我将db代码放在控制器中似乎可以工作,那么只有在模型中使用此设置才会失败.我不能为我的生活弄清楚代码在哪里误入歧途......
小智 10
您必须先加载数据库库.在autoload.php下面添加代码,
$autoload[‘libraries’] = array(‘database’);
Run Code Online (Sandbox Code Playgroud)
要添加到atno的答案:
class Xxxx_model extends Model
{
function XxxxModel() //<--- does not match model name Xxxx_model
{
parent::Model();
$this->load->database();
}
Run Code Online (Sandbox Code Playgroud)
基本上,您不是构建类或父类Model.如果您使用的是PHP5,则可以使用__construct(),否则您必须完全匹配类名,无论您在控制器中加载它的别名是什么.例:
class Xxxx_model extends Model
{
function __construct()
{
parent::__construct(); // construct the Model class
}
}
Run Code Online (Sandbox Code Playgroud)
我可能弄错了(暂时没有使用1.x),但是如果你构造Model类,如果你使用默认的连接设置就没有必要加载数据库config/database.php,它应该已经为你加载了.
小智 5
将库“数据库”添加到自动加载。
/application/config/autoload.php
$autoload['libraries'] = array(
'database'
);
可能你和我一样开始了新项目;-)