我一直在做一个codeigniter项目。
这是我的表格
category
cid cname
5 general
6 science
7 math
books
bid bname
12 first
13 second
14 third
15 fourth
16 fifth
17 sixth
dir
id bid cid
1 12 5
2 13 6
3 14 7
4 15 6
5 16 5
6 17 5
我想显示为
general 3
science 2
math 1
我在模型
中使用了以下功能代码function category_details(){
$this->db->order_by('cname','asc');
$query=$this->db->query('Select category.cid,category.cname,count(dir.cid) from dir join category on category.cid=dir.cid join books on dir.bid=books.bid group by category.cname');
return $query->result_array();
}
现在我想创建一个链接,打开每个类别并在里面显示书籍。
以下是我尝试这样做的方法,
View
<a href="<?php echo site_url('category/books/'.$val['cid']);?>">Open</a>
Controller
public function books($cid){
$data['books']=$this->books_model->get_books($cid);
$this->load->view('header',$data);
$this->load->view('category_books',$data);
$this->load->view('footer',$data);
}
Model
function get_books($cid){
$this->db->where('dir.cid',$cid);
$query=$this->db->query('select * from books join dir on books.bid=dir.bid join category on dir.cid=category.cid');
return $query->result_array();
}
但这导致选择所有书籍而不是根据我传递的$ cid(虽然我可以看到在网址中传递了$ cid)。
非常感谢任何帮助。
答案 0 :(得分:0)
尝试此查询:
function category_details(){
$query=$this->db->query('select c.cname, count(d.cid) as total from category as c join dir as d ON c.cid=d.cid group by d.cid order by total DESC');
return $query->result_array();
}
答案 1 :(得分:0)
以下是我得到的结果,感谢@Parvez的代码。 我添加了“where”条件,因为它首先要检查它,并且因为我实际上想要输出books表,我在books中将books.bname更改为books。*。 以下是相应的最终模型代码。
function get_books($cid){
$this->db->where('dir.cid',$cid)
$this->db->select('dir.*,category.cname,books.*');
$this->db->from('dir');
$this->db->join('category', 'category.cid = dir.cid');
$this->db->join('books', 'books.bid = dir.bid');
return $query->result_array();