这里我有一个相同类别名称的列表,它们属于不同的父类别。当我根据id获取结果获取数据因为id对于所有人都不同但是当我按类别名称获取时我只得到第一个结果即使我在不同的父类别下有两个相同的类别名称,我的类别表
id category_name parent_id
8 men 0
9 kids 0
10 T-shirts 8
11 Shirts 8
12 Jeans 8
13 Pants 8
14 Shorts 8
15 Tees 9
16 Shirts 9
17 Jeans 9
18 Pants 9
这里有衬衫作为不同parent_id下的类别名称。当我选择16件衬衫的id时,由于相同的类别名称,我获得了id 11衬衫的价值。 这是控制器使用
public function men_clothing_image($category=null)
{
$category_id =$this->roxmodel->get_category_id($category);
$data['active_mn']='men_clothing';
$data['men']=$this->roxmodel->get_category_by_parent($p_id=8);
$data['kids']=$this->roxmodel->get_category_by_parent($p_id=9);
$config['base_url'] = base_url().'men-'.$category;
$config['per_page'] = 2;
$config['uri_rsegment'] = 4;
$config['use_page_numbers'] = TRUE;
$config['total_rows'] = $this->roxmodel->count_category_images($category_id);
$data['galllery']=$this->roxmodel->get_gallery_men_images($category_id,$config['per_page'],$this->uri->rsegment(4));
$this->load->library('pagination',$config);
$data['page_links'] = $this->pagination->create_links();
$this->load->view('men_clothing_image',$data);
}
这是传递的模型
public function get_category_id($category_name)
{
$this->db->select('category.id');
$this->db->where('category.category_name',$category_name);
$result = $this->db->get('category')->row();
if($result)
{
return $result->id;
}
}
我已经完成了自连接以连接id和类别名称,但输出为空
public function get_category_id($category_name)
{
$this->db->select('c.id');
$this->db->join('category c1','c.id=c1.category_name');
$this->db->where('c1.category_name',$category_name);
$result = $this->db->get('category c')->row();
if($result)
{
return $result->id;
}
}
计算图像功能如下..
public function count_category_images($p_id)
{
$this->db->select('gallery.*','category.category_name');
$this->db->join('category', 'category.id = gallery.category_id');
$this->db->where('category.id',$p_id);
$this->db->order_by('gallery.id','desc');
return $this->db->count_all_results('gallery');
}
答案 0 :(得分:1)
您必须使用result()
或result_array()
。因为结果中有几行。
row()
- 此函数返回单个结果行。
result()
- 此函数将查询结果作为对象数组返回,或者空数组返回。
所以,试试
public function get_category_id($category_name)
{
$this->db->select('category.id');
$this->db->join('category c1','c.id=c1.category_name');
$this->db->where('category.category_name',$category_name);
$result = $this->db->get('category')->result();
return $result;
}
您也可以使用
if ($query->num_rows() > 0)
检查是否有行。
如果您使用,搜索和使用类别名称的一部分,请使用LIKE
的{{1}}个互联网。
答案 1 :(得分:0)
尝试使用类似查询
如果要控制放置通配符(%)的位置,可以使用可选的第三个参数。您的选择是在'之后,'之后'和'两个'
并尝试分组
public function get_category_id($category_name)
{
$this->db->select('category.id');
$this->db->like('category.category_name',$category_name,'both');
$this->db->group_by(array("category.id", "category.category_name","category.parent_id"));
$result = $this->db->get('category')->result_array();
if($result)
{
print_r($result);
exit;
// return $result;
}
}