在从Codeigniter 2.2升级到3.1的过程中,我们重命名了所有模型。现在除非我用其他名称重新制作它们,否则它们不会加载。
查看其他许多文章,常见的问题是无法在名称中加载模型或拼写错误。我没有看到这两种情况。有几个模型都存在此问题,但是我发现一个不理想的修复方法是使用新名称创建新模型。第一个示例是一个名为PrpmsModel的模型,我可以在该文件中获取所有内容,并创建一个名为FooModel.php的新模型,只需将文件中的类名称也更改为FooModel,然后在我加载它并进行调用时就可以使用。
<?php
/**
* PRPMS - Model
**/
if (! defined('BASEPATH'))
exit('No direct script access allowed');
class PrpmsModel extends MY_Model
{
我拿出了尾端,但只是为了看清顶部的定义。
$this->load->model('PrpmsModel');
$employee = $this->PrpmsModel->fetchPRPMSbyEmployeeId(1, 1);
以上操作无效。
<?php
/**
* Foo - Model
**/
if (! defined('BASEPATH'))
exit('No direct script access allowed');
class FooModel extends MY_Model
{
将所有PrpmsModel.php复制到FooModel.php
$this->load->model('FooModel');
$employee = $this->FooModel->fetchPRPMSbyEmployeeId(1, 1);
以上内容确实有效。 该模型以前是prpmsModel,所以我只是更改了大小写。文件名也进行了更改,以匹配PrpmsModel大小写。
答案 0 :(得分:0)
在CI 2.x和CI 3.x之间更改了命名约定,并在{x3>} 2.x-> 3.0迁移指南中概述了这些约定{p3}
要特别注意模型,请记住在CI 3中:
sales_model.php
不好,SALES_MODEL.php
和Sales_Model.php
都不行。Sales_model.php
可以)Class Sales_model extends CI_Model { }
$this->load->model('sales_model');
是可以的,而$this->load->model('Sales_model');
,$this->load->model('Sales_Model');
或$this->load->model('SALES_MODEL');
则不是)确保已迁移的代码库中的所有内容均符合上述约定,并且应该没问题。如果没有,则需要更多代码(以及错误/调试日志)来帮助您进行调试。
由于您已经在阅读2.x-> 3.0迁移指南,因此请花一些时间阅读整个文档。从2.x到3.x的变化很大,因此确保一切都符合3.x标准肯定不会受到损害