【问题标题】:$this->load->model() not working in CodeIgniter$this->load->model() 在 CodeIgniter 中不起作用
【发布时间】:2023-04-10 06:30:02
【问题描述】:

我正在使用 CodeIgniter 2.1.2,这是我现在的情况。我在C:\wamp\www\cr8v\application\models 中有一个名为 math.php 的模型。我正在尝试从C:\wamp\www\cr8v\application\controllers\site.php 将其加载到我的控制器中,但出现此错误:

找不到您指定的模型:math_model

这是math.php的内容:

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

这是我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();
        }
    }  
?>

我在 YouTube 的教程中遵循了这一点。然而,它并没有给我我想要的输出。我试过用谷歌搜索它并阅读其他相关问题,但是这些信息还不够。

我刚刚读过this

现在我有以下错误:

( ! ) 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

【问题讨论】:

    标签: codeigniter model


    【解决方案1】:

    名称需要在所有地方都相同:

    这里:

    class Math_model extends CI_Model {
       // your model
    }
    

    这里:

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

    使用时:

    $this->math_model->add();
    

    并且:在您的文件系统中。因此,将 math.php 重命名为 math_model.php 即可。

    【讨论】:

    • 呃,我已经完成了你所说的,但是我得到了与我编辑问题的部分相同的错误。解析错误等等
    【解决方案2】:

    文件名应该是 math_model.php,你应该这样称呼它:

    echo $this->math_model->add();
    

    【讨论】:

    • 呃,我已经完成了你所说的,但是我得到了与我编辑问题的部分相同的错误。解析错误等等。
    【解决方案3】:

    这个问题已经得到了真正的回答,问题是这样的:

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

    ..这是声明类后的开闭括号.. 应该是:

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

    非常感谢那些回复的人

    【讨论】:

      【解决方案4】:

      嗯,应该始终注意,函数名称不应与控制器或模型名称重复,如下所示;

      <?php
        class Abc extends CI_Controller{
      
      public function abc(){} // this confused CI in loading   
      
      }
      

      这可能对刚接触 CI 的开发人员有所帮助,

      【讨论】:

        【解决方案5】:

        文件名和模型名应该相同 试试这个吧

        class Math_model extends CI_Model {
           // your code
        }
        

        和文件名 应该是 Math_model.php

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-20
          • 2012-10-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多