这些是控制器
class Dashboard extends CI_Controller{
public function __construct(){
parent::__construct();
$this->load->model("admin/post_model");
$this->load->model("admin/comment_model");
}
public function index(){
$data['post_res'] = $this->post_model->getPost();
$data['com_res'] = $this->post_model->getComments();
}
}
我无法在同一个控制器中加载2个模型。它给了我一个错误
Fatal error: Call to a member function getComments() on a non-object in C:\xampp\htdocs\blog\application\controllers\ram-admin\dashboard.php on line 13
我怎样才能加载模型?
提前非常感谢你!
答案 0 :(得分:6)
试试这个
class Dashboard extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model("admin/post_model","post_model");
$this->load->model("admin/comment_model","comment_model");
}
public function index(){
$data['post_res'] = $this->post_model->getPost();
$data['com_res'] = $this->comment_model->getComments();
}
答案 1 :(得分:3)
检查模型是否正确延伸了CI_Model
和comment_model
的{{1}}
示例强>:
post_model
答案 2 :(得分:2)
getComments()是 comment_model ,而不是post_model ..
您可以通过传递第二个参数来命名模型;
$this->load->model('admin/comment_model', 'comments');
$data['com_res'] = $this->comments->getComments();
答案 3 :(得分:0)
这很奇怪
我只是把这行代码
$this->load->model("admin/comment_model","comment_model");
之前
$this->load->model("admin/page_model","page_model");
现在工作正常:)
感谢您的回复!
答案 4 :(得分:-1)
对于多个模型,您可以这样做:
$models = array(
'menu_model' => 'mmodel',
'user_model' => 'umodel',
'admin_model' => 'amodel',
);
foreach ($models as $file => $object_name)
{
$this->load->model($file, $object_name);
}
但如上所述,您可以创建文件application / core / MY_Loader.php并编写自己的方法来加载模型。我认为这可能有效(未经测试):
class MY_Loader extends CI_Loader {
function model($model, $name = '', $db_conn = FALSE)
{
if (is_array($model))
{
foreach ($model as $file => $object_name)
{
// Linear array was passed, be backwards compatible.
// CI already allows loading models as arrays, but does
// not accept the model name param, just the file name
if ( ! is_string($file))
{
$file = $object_name;
$object_name = NULL;
}
parent::model($file, $object_name);
}
return;
}
// Call the default method otherwise
parent::model($model, $name, $db_conn);
}
}
使用上面的变量:
$this->load->model($models);
您还可以允许在数组中传递单独的数据库连接,但是您需要具有多维数组,而不是我们使用的简单数组。不管怎么说,你不需要这么做。
答案 5 :(得分:-1)
只需在上面的数组中使用模型名称。
$this->load->model(array("admin/post_model", "admin/comment_model"));