Codeigniter - 查询结果多表

时间:2014-08-04 18:48:40

标签: mysql codeigniter

所以我会有四张桌子

title(table)

  • ID
  • TITLE_NAME
  • id_director [fk director.id_director]
导演(表)

  • id_director
  • director_name

演员(表)

  • id_actor
  • ACTOR_NAME

title_actor(table)

  • ID
  • id_title [fk title.id]
  • id_actor [fk actor.id_actor]

我的控制器(为此我决定不使用模型)

public function list_title_detalis($id)
$this->db->select('*');
$this->db->from('title a');
$this->db->join('director', 'director.id_director = a.id_director');
$this->db->join('title_actor', 'title_actor.id_title = a.id');
$this->db->join('actor b', 'b.id_actor= title_actor.id_actor'); 
$this->db->where('a.id',$id);
$query = $this->db->get();
$data['iten'] = $query->result();
$this->load->view('title_detail_view', $data);

我的观点

    foreach ($iten as $title){
echo '<p>'.($title->title_name).'</p>';
echo "<a href='" . base_url() .'directors/detail/' . $title->id_director. "'>";
echo '<p>'.($title->name_director).'</p>'; // It's correct!!!
echo "<a href='" . base_url() .'actors/detail/' . $title->id_actor. "'>";
echo '<p>'.($title->name_actor).'</p>'; 

}

是这样的吗?

1 个答案:

答案 0 :(得分:0)

您应该更改这些表的设计 - 而不是拥有一堆名为id_actor(x)的列,您应该添加一个将标题连接到actor的新表。这称为联结表,它解决了多对多关系的问题。

表很简单 - 它只有三列(id,id_title和id_actor)。这种结构允许你拥有从零到无限数量的演员的标题。