Php 在不破坏MVC框架的情况下在CodeIgniter中加载视图中的模型

Php 在不破坏MVC框架的情况下在CodeIgniter中加载视图中的模型,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我是MVC框架和CodeIgniter的新手。在CodeIgniter中访问视图中的模型而不破坏MVC框架是否可能?这就是我要说的 下面是我的视图代码 foreach ($packages as $row) { if($row->Category == "Wedding") { $package_name = $row->package_name; $ratings = $model->ratings($package_name)

我是MVC框架和CodeIgniter的新手。在CodeIgniter中访问视图中的模型而不破坏MVC框架是否可能?这就是我要说的

下面是我的视图代码

foreach ($packages as $row)
{
    if($row->Category == "Wedding")
    {
        $package_name = $row->package_name;
        $ratings = $model->ratings($package_name);
        foreach ($ratings as $row_review)
        {

        }
    }
}
这是我的模型

public function ratings($package_name)
{
    $this->db->select('round(sum(Rating)/count(Rating)) as total');
    $this->db->where('package_name', $package_name);
    $query = $this->db->get('tbl_review');
    return $query->result();
}

希望这对您有所帮助:

注意:您的
数据库
模型
也应该加载到controller或
autoload.php中

您可以在condeigniter的
助手的帮助下完成此操作。创建一个文件,将其命名为
custom_helper.php
,并将其添加到helpers文件夹中,然后使用
autoload.php
将其加载,如下所示:

function package_ratings($package_name)
{ 
    $ci = & get_instance();
    $ci->db->select('round(sum(Rating)/count(Rating)) as total'); 
    $ci->db->where('package_name',$package_name);
    $query = $ci->db->get('tbl_review'); 
    return $query->result(); 
}
custom_helper.php
中添加如下函数:

function package_ratings($package_name)
{ 
    $ci = & get_instance();
    $ci->db->select('round(sum(Rating)/count(Rating)) as total'); 
    $ci->db->where('package_name',$package_name);
    $query = $ci->db->get('tbl_review'); 
    return $query->result(); 
}
在您看来,使用
package\u ratings
功能如下所示:

foreach($packages as $row)
{ 
    if($row->Category == "Wedding")
    { 
        $package_name = $row->package_name; 
        $ratings = package_ratings($package_name); 
        foreach ($ratings as $row_review) 
        { 

        }
    }
}

更多信息:

视图中的可以直接调用模型函数:

$CI =& get_instance();
$CI->load->model('your_model');// If the model was not loaded before(in controller or via autoloader).
....
$result = $CI->your_model->model_method();

这就是我所说的这是我的观点,foreach($row的包){if($row->Category==“widding”){$package_name=$row->package_name;$ratings=$model->ratings($package_name);foreach($row_review的包){}}这是我的模型公共功能评级($package_name){$this->db->select('round(sum(Rating)/count(Rating))as total');$this->db->where('package_name',$package_name);$query=$this->db->get('tbl_review');返回$query->result();}您可以在
助手的帮助下完成这项工作,而无需中断MVC。比中断MVC模式更糟糕的是在循环中运行查询。通过将查询移到循环外并将其扩展以查询所有必要的数据,重写在循环内执行查询的代码。是什么生成了
$packages
数据e是一个非常大的机会,所有需要的信息-包和评级-可以通过一个查询收集。循环查询?真的吗?