0

我的 CI 控制器如下所示:

 // Controller.
 class Hello extends CI_Controller
 {
     public function one($name)
     {
         $this->load->model("hello_model");

         $profile = $this->hello_model->getProfile("Me");
         //$profile2 = $this->hello_model->otherAction();

         $this->load->view('header');

         $data = array("name" => $name);
         $data['profile'] = $profile;
         $this->load->view('one.html', $data);
     }
 }

这是/是模型

 class Hello_model extends CI_Model
 {
     public function getProfile($name)
     {
         return array("fullName" => "Martin", "Age" => 28);
     }
 }

 class Hello_model_2 extends CI_Model
 {
     public function otherAction()
     {
         echo "Data";
     }
 }

当我启用该$profile2语句并在浏览器中访问控制器时,我在 Apache 错误日志中发现此错误消息:

[Mon Apr 01 ...] [error] [client 127.0.0.1]
PHP Fatal error: 
Call to undefined method Hello_model::otherAction() in 
/.../CodeIgniter_2.1.3/application/controllers/Hello.php on line x

x声明的行在哪里profile2

我可以在一个“”文件中没有两个类model吗?顺便说一句,.phpCI-speak 中调用的文件是什么?模块?

4

4 回答 4

1

每个文件必须只有一个模型。

http://ellislab.com/codeigniter/user-guide/general/models.html

而是在同一类中创建另一个方法,例如-

class Hello_model extends CI_Model
 {
     public function getProfile($name)
     {
         return array("fullName" => "Martin", "Age" => 28);
     }

     public function otherAction()
     {
         echo "Data";
     }
 }
于 2013-04-01T10:37:11.527 回答
1

你必须创建两个单独的类文件

你好_model.php

 class Hello_model extends CI_Model
 {
     public function getProfile($name)
     {
         return array("fullName" => "Martin", "Age" => 28);
     }
 }

hello_model_2.php

 class Hello_model_2 extends CI_Model
 {
     public function otherAction()
     {
         echo "Data";
     }
 }

并调用控制器

     $this->load->model("hello_model");
     $this->load->model("Hello_model_2");

     $profile = $this->hello_model->getProfile("Me");
     $profile2 = $this->hello_model_2->otherAction();

或者

您可以在模型中使用多种方法

于 2013-04-01T10:37:28.510 回答
0

如果你想创建 2 个模型文件Hello_model然后也像这样Hello_model_2加载Hello_model_2

class Hello extends CI_Controller
{
 public function one($name)
 {
     $this->load->model("hello_model");
     $this->load->model("hello_model_2");

     $profile = $this->hello_model->getProfile("Me");
     $profile2 = $this->hello_model_2->otherAction();

     $this->load->view('header');

     $data = array("name" => $name);
     $data['profile'] = $profile;
     $this->load->view('one.html', $data);
 }
}

如果您使用一个模型和两个功能,那么您应该将此代码用于您的模型

class Hello_model extends CI_Model
{
   public function getProfile($name)
   {
       return array("fullName" => "Martin", "Age" => 28);
   }

   public function otherAction()
   {
      echo "Data";
   }
}

希望你能理解。

于 2013-04-01T11:35:46.380 回答
0

您可以尝试将一个模型的“EXTENDS”转换为另一个模型

class Hello_model extends CI_Model
{
   public function getProfile($name)
   {
      return array("fullName" => "Martin", "Age" => 28);
   }

   public function otherAction()
   {
      echo "Data";
   }
}

然后创建第二个模型,如 Hello_model_2.php

class Hello_model_2 extends Hello_model
{ 
    //Here access those from Hello_model
}
于 2013-04-01T10:54:12.297 回答