CodeIgniter $this->load->model() not working

2019-02-18 08:09发布

Im using codeigniter 2.1.2 and here's my situation right now. I have a model named math.php in C:\wamp\www\cr8v\application\models. I am trying to load this in my controller from C:\wamp\www\cr8v\application\controllers\site.php yet im getting this error:

Unable to locate the model you have specified: math_model

Here's the content of math.php

 <?php
    class Math_model extends CI_Model(){
        public function add(){
            return 1+1;
        }
    }
 ?>

And here's the content of my site.php

<?php
    class Site extends CI_Controller{
        public function index(){
            $this->addstuff();
        }

        public function addstuff(){
            $this->load->model("math_model");
            echo $this->math->add();
        }
    }  
?>

I followed this in a tutorial in youtube. yet, it doesnt give me my desired output. Ive tried googling about it and read other related questions with this, however those information are not enough. Please help.

EDITED i have read this just awhile ago

[http://stackoverflow.com/questions/8074368/codeigniter-php-model-access-unable-to-locate-the-model-you-have-specified][1]

now i have this error

( ! ) Parse error: syntax error, unexpected '(', expecting '{' in C:\wamp\www\cr8v\application\models\math_model.php on line 2
Call Stack
#   Time    Memory  Function    Location
1   0.0036  148768  {main}( )   ..\index.php:0
2   0.0062  185072  require_once( 'C:\wamp\www\cr8v\system\core\CodeIgniter.php' )  ..\index.php:202
3   0.0561  784312  call_user_func_array ( )    ..\CodeIgniter.php:359
4   0.0561  784360  Site->index( )  ..\CodeIgniter.php:359
5   0.0561  784376  Site->addstuff( )   ..\site.php:4
6   0.0561  784504  CI_Loader->model( ) ..\site.php:8

4条回答
ゆ 、 Hurt°
2楼-- · 2019-02-18 08:38

The name needs to be the same in all places:

Here:

class Math_model extends CI_Model {
   // your model
}

Here:

$this->load->model("math_model");

When using it:

$this->math_model->add();

And: in your file system. So rename math.php to math_model.php and it will work.

查看更多
姐就是有狂的资本
3楼-- · 2019-02-18 08:39

The name of the file should be math_model.php and you should call it like this:

echo $this->math_model->add();
查看更多
The star\"
4楼-- · 2019-02-18 08:41

Well, it should always be noted that function name should not be replicated with controller or model name such as below;

<?php
  class Abc extends CI_Controller{

public function abc(){} // this confused CI in loading   

}

this may be helpful for developers new to CI,

查看更多
姐就是有狂的资本
5楼-- · 2019-02-18 09:04

The question has been answered really and the problem was this:

 <?php
    class Math_model extends CI_Model(){
        //so on
        } 
 ?>

..it's the open and close parethesis after declaring the class.. it should be:

 <?php
    class Math_model extends CI_Model{
        //so on
        } 
 ?>

thank you so much for those who responded

查看更多
登录 后发表回答