Codeigniter - 从辅助表中获取值

时间:2014-07-02 19:22:34

标签: php mysql codeigniter

我的数据库中有3个表:'锻炼','练习'和'exercise_list'。

  

锻炼:| id | datetime | misc1 | misc2 |

     

练习:| id | ex_id | wo_id |重量|代表| wo_order |

     

exercise_list:| id |标题|

到目前为止,我已经生成了一个视图,用于获取特定锻炼的详细信息(myurl.com/workouts/view/<datetime>

我已经构建了一个查询来抓取“锻炼”中的字段,并且它还会抓取与该锻炼相对应的任何“练习”条目(通过使用wo_id的get_where)。

我建立了一个视图,其中列出了该锻炼的练习,但我只能预测锻炼的“身份”。我需要以某种方式进一步查询,以获取与该锻炼“id”相关的每个锻炼的“标题”。

所以我目前有一个表(html):

  

|练习|重量|代表|

     

| 1 | 50 | 8 | ...

我需要'1'才能成为'exercise_list'中练习的标题,'id'为'1'。


我的解决方案

可能不完美但有效:

public function get_exercises($wo_id)
  {
    $this->db->select('exercises.wo_id,
                       exercises.weight,
                       exercises.reps,
                       exercise_list.title');
    $this->db->from('exercises');
    $this->db->join('exercise_list','exercises.ex_id= exercise_list.id');
    $this->db->where('exercises.wo_id',$wo_id);
    $q = $this->db->get();
    $query = $q->result_array();
    return $query;
  }

不确定做最后几行的最佳方法。这是在我的模型中,所以我需要返回数组。我想要有一种比过去3行更好的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用联接并从exercise_list

中选择标题
$this->db->select('w.*,el.title')
    ->from('workouts w')
    ->join('exercises e','w.id = e.wo_id')
    ->join('exercise_list el','el.id = e.ex_id')
    ->where('e.wo_id',$yourid)
    ->get()
    ->result();