使用CodeIgniter db和活动记录时出现“未定义属性”错误

时间:2013-05-16 20:35:31

标签: php codeigniter

我正在尝试使用活动记录和codeigniter

从一些简单的表单中插入演示记录
function create_httpPost()
{
   $data = array(
      'title' => $this->input->post('title'),
      'content' => $this->input->post('content')
   );

   $this->newsModel->createData($data); //error occures here
   $this->index();//aka redirectToAction
}

但在发布表格后我收到了以下错误

  

**消息:未定义属性:新闻:: $ newsModel

     

文件名:controllers / news.php行号:29 **

内部模型我有这个方法

function createData($data)
    {
        $this->db->insert('News', $data);
        return;
    }

我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

根据CodeIgniter文档,模型类名称必须以大写字母开头,其余名称为小写。

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

标题为模型剖析:

的部分
  

类名必须首字母大写,其余名称小写...   文件名将是您的类名的小写版本。

在您的情况下,newsModel违反了规则,CodeIgniter名称解析器可能找不到类(或相关的.php文件),这就是为什么它认为newsModel是属性(那不存在。)

答案 1 :(得分:0)

试试这个:

function create_httpPost()
{
   $this->load->model('newsModel'); // you need to load model

   $this->newsModel->createData(array(
      'title'   => $this->input->post('title', TRUE),
      'content' => $this->input->post('content', TRUE)
   ));

   $this->index();
}

答案 2 :(得分:-1)

这是CI2非常常见的问题。这个函数必须在你的一个模型中吗?

如果是,请注意u can't reference model from inside other model!由于某些原因。你需要让控制器处理