从视图调用模型(Codeigniter)

时间:2012-06-15 07:19:27

标签: php codeigniter

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

在Post表中,我有“id,cat_id,title,content”...在类别平板电脑中,我有“id,name”......

要显示帖子,

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

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

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

请帮帮我......

谢谢

5 个答案:

答案 0 :(得分:10)

您可以使用:

   $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

答案 1 :(得分:4)

您可以在控制器中调用模型,就像这样

$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);

答案 2 :(得分:2)

试试这个作为你的模特:

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

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

您现在应该可以访问类别名称。

答案 3 :(得分:1)

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

控制器:

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

查看:

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

答案 4 :(得分:0)

这是有效的代码......

    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();
    }