我有两张表manufacturer
和colors
。
表manufacturer
。
id title
5 Audi
8 Toyota
11 Peugeot
在颜色表中,我有多种颜色供制造商使用
id car_id color
1 5 red
2 5 blue
3 8 cyan
4 5 purple
5 8 dark_cyan
6 11 white
7 11 black
问题是,如何从数据库中获取结果以显示所有车辆的所有颜色?
我喜欢这样的事情......
$this->db->select('m.*, c.*');
$this->db->join('colors c', 'c.car_id = m.id', 'left');
$this->db->group_by('m.title');
$this->db->order_by('c.color', 'DESC');
return $this->db->get('manufacturer');
查看
<?php foreach($all_colors->result() AS $color) : ?>
<h4><?php echo $color->title; ?></h4>
<?php echo $color->color; ?>
<?php endforeach; ?>
这样它就会显示出来
- Audi
red
blue
purple
- Toyota
cyan
dark_cyan
- Peugeot
white
black
这个我的例子只显示那辆车的标题和第一种颜色......?
- Audi
red
- Toyota
cyan
- Peugeot
white
感谢您的帮助!
答案 0 :(得分:0)
我没有看到您提取数据的方式有任何问题。唯一的问题可能是在这些方法中使用别名。尝试使用这样的原始查询:
$q = $this->db->query("SELECT * FROM manufacturer m left join colors c on c.car_id = m.id GROUP BY m.title ORDER BY c.color DESC");
return $q->result();
然后:
<?php foreach($all_colors->result() AS $color) : ?>
<h4><?php echo $color->title; ?></h4>
<?php echo $color->color; ?>
<?php endforeach; ?>
或尝试获取没有别名的数据:
$this->db->select('*');
$this->db->join('colors', 'colors.car_id = manufacturer.id', 'left');
$this->db->group_by('manufacturer.title');
$this->db->order_by('colors.color', 'DESC');
return $this->db->get('manufacturer');