在CodeIgniter中扩展CI_Model时的未定义属性

时间:2013-01-04 09:58:01

标签: php codeigniter

  

可能重复:
  Codeigniter Message: Undefined property: stdClass

位置: application / core / student_model.php

class Student_model extends CI_Model
{
    private $id;

    public function __construct() {
        parent::__construct();
    }

    public function setId($id){
        $this->id = $id;
    }

    public function getId() {
        return $this->id;
    }
}

位置: application / controllers / test.php

class Test extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('Student_model');
    }

    public function index()
    {
        $student = $this->student_model->setId('1234567');
        echo $student->getId();
    }
}

我收到以下消息/错误。

Message: Undefined property: Test::$student_model
Filename: controllers/test.php
Line Number: 13

此行是我调用方法setId的地方。

谁能看到我做错了什么?

3 个答案:

答案 0 :(得分:3)

尝试替换

$this->student_model->setId('1234567');

$this->Student_model->setId('1234567');

您的班级已经资本化,因此该物业也应该资本化。

答案 1 :(得分:1)

尝试

public function __construct()
{
    parent::__construct();
    $this->load->model('Student_model', 's_model');
}

public function index()
{
    $student = $this->s_model->setId('1234567');
    echo $student->getId();
}

答案 2 :(得分:0)

你做错了是:

您要将$student分配给$this->student_model->setId('1234567');
这是一个不返回任何东西的函数或“setter”;而且您将无法使用$student->getId();

我会做的是

class Test extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('student_model', 'student');
    }

    public function index()
    {
        $this->student->setId('1234567');
        echo $this->student->getId();
    }
}