codeigniter不会创建一个模型,并且不会告诉我为什么不这样做

时间:2014-08-16 23:40:56

标签: php codeigniter

控制器代码(包括我的测试):

$inventory = $this->load->model('character/inventoryModel');

//include('C:\xampp\htdocs\proj\application\models\character\inventoryModel.php');
//$testObject = new InventoryModel(43);

//var_dump($inventory); die();
echo $inventory->checkInventory(25, 1, 43);

模型头和构造函数:

class InventoryModel extends CI_Model
{
protected $who,
          $backpackCount,
          $equippedCount;

public function __construct()
{
    $this->backpackCount = 0;
    $this->equippedCount = 0;
    parent::__construct();
}

如果我从测试代码调用,模型返回正常,但从CI本身我得到:

  

致命错误:调用某个成员函数   非对象

转储实例返回null - 模型不是从CI内部实例化的,但如果我执行基本包含和新实例,则实例化很好。我做错了什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

$this->load->model('character/InventoryModel');
echo( $this->InventoryModel->checkInventory(25, 1, 43) );

来自CodeIgniter文档:

加载后,您将使用与您的类同名的对象访问您的模型函数

$this->load->model('Model_name');

$this->Model_name->function();

以下是链接:https://ellislab.com/codeigniter/user-guide/general/models.html

您还应注意,在加载模型时,您使用的是错误的模型名称。名称应为“InventoryModel”而不是“inventoryModel”,因此名称与类本身相同。

并且你得到了致命的错误消息,因为model方法没有返回任何内容,根据文档,它根本不应该。只需加载没有赋值的模型,然后通过模型类的名称使用它,如上所示和文档中所示:

$this->InventoryModel->checkInventory(25, 1, 43)

答案 1 :(得分:0)

通过将name参数传递给模型构造函数,可以实现我想要的东西:

$this->load->model('myModel', 'myCustomModelName');
$value = $this->myCustomModelName->getValue();
这很简单。希望其他人能发现这很有用。