规范化,类别列表和代码点火器

时间:2013-05-31 02:04:34

标签: mysql database codeigniter normalization

我有三张桌子

物品 enter image description here

类别

enter image description here

和关系表articles_categories

enter image description here

该表是我使用规范化功能存储我的关系的地方。就像这样 enter image description here

我能够做选择,插入,更新,删除。这是我以前的问题 Insert , Update , Delete -> Normalization & Code Igniter Saving articles and related categories according to normalization

我现在想要实现的是我正在尝试通过类别创建文章列表。喜欢这个

Category Name
- article relating to that category
- article relating to that category
- article relating to that category
- article relating to that category

这是我的控制器

function category($id)
        {
            $data['title'] = "View by category";
            $data['articles_categories']=$this->articles_categories_model->get_by_id($id);
            $data['articles']=$this->articles_model->get();
            $data['category_id']=$id;

            $data['categories_list']=$this->categories_model->get();     
            $this->load->view('articles_pages/category',$data);    
        }

我的观点

<?php
    //$category_id;
    foreach($articles as $a)
    {
        foreach($articles_categories as $ac)
        {
            if($ac['categories_id']==$category_id && $a['id']==$ac['articles_id'])
            {
                echo $a['title'];
            }
        }
    }
?>

我无法得到渴望的结果。请帮我。感谢

1 个答案:

答案 0 :(得分:2)

由于类别方法将$id作为参数,我将假设您只想显示单个类别的文章。

您当前正在返回您不想要的数据,然后在您的视图中将其过滤掉。这是低效的(并且随着文章数量的增加可能成为问题),并且它不是MVC编程的正确方法。我们应该专注于在模型中获取正确的数据并将其传递给视图,而不是返回每篇文章然后过滤数据。

控制器:

function category($id) 
{
   $data['title'] = "View by category";
   $data['articles'] = $this->articles_model->get_articles_by_category(id);
   $data['category_id']=$id;

   $data['categories_list']=$this->categories_model->get();     
   $this->load->view('articles_pages/category',$data);    
}

型号:

function get_articles_by_category($id) 
{
   $this->db->select('*');
   $this->db->from('articles');
   $this->db->join('articles_categories', 'articles.id = articles_categories.articles_id');
   $this->db->where('articles_categories.categories_id', $id);
   $query = $this->db->get();

   return $query;
}

在上面我们使用articles_categories表加入articles表,允许我们从某个类别中获取文章。以上只是使用活动记录类的一个示例,但您可以随意使用您喜欢的样式重新编写它。