从视图调用模型(代码点火器)


Calling Model from View (Codeigniter)

我是Codeingiter的新手,我正在构建一个简单的博客。

在帖子表中,我有"ID、cat_id、标题、内容"......在类别平板电脑中,我有"ID,姓名"...

要显示帖子,

我使用以下函数从模型内的 POST 中获取内容......

function get_posts(){
        $query = $this->db->get('post');
        return $query->result();
}

然后我加载视图文件以显示帖子...上面的函数只获取类别 ID,但我需要类别名称...所以我需要从视图文件调用模型...我认为从视图中调用模型是不合逻辑的......有什么解决办法吗???

请帮帮我...

谢谢

你可以使用这个:

   $ci =&get_instance();
   $ci->load->model(your model);
   $ci->(your model)->(your function);     
   Note: You have to call your model in your controller.Its working fine

您可以像这样简单地调用控制器中的

模型
$this->load->model('Model_name');
$this->Model_name->function(); 

或者,如果您不想直接在视图中调用,可以通过控制器获取数据:

$categoryID =  $this->Model_name->function();
$categoryDetails =  $this->Model_name->function($categoryID);
$data = [
    'categoryID'      => $categoryID,
    'categoryDetails' => $categoryDetails
];

然后

$this->load->view('view name',$data);

试试这个作为你的模型:

function get_posts(){         
    $this->db->get('post');         
    $this->db->join('category', 'posts.category_id = category.id');
    $query = $this->db->get();
    return $query->result(); 
}

请检查连接部分中的表和列名称是否正确。"类别"是类别表的名称,posts.category_id帖子表中引用类别 ID 的列,category.id 中的 ID 列类别表。

您现在应该能够访问类别名称。

从控制器调用模型并将数据传递给视图:

控制器:

$data['posts'] = $this->my_model->get_posts();
$this->load->view('my_view', $data);

视图:

foreach ($posts as $post) {
   //do something
}

这是有效的代码...

    function get_posts(){
        $this->db->select('*');
        $this->db->from('post');
        $this->db->join('category','post.cat_id=category.id');
        $query = $this->db->get();
        return $query->result();
    }