codeigniter如何从两个表中检索数据

时间:2012-12-10 22:29:36

标签: php codeigniter

我有两张桌子:

users: id, name, email

user_experience: id_exp, user_id, exp_date

有多个用户,每个用户都有多种体验。

E.g。

用户:

1, david, david@david.com 

与三种体验相关联

user_experience:

1, 1, 1/1/2012
2, 1, 2,2,2012
3, 1, 3,3,2012

如何检索数据,以便我可以在这样的视图中显示它:

Name   / email            / Date of experience

david, david@david.com    1/1/2012

                          2/2/2012

                          3/3/2012

joe,   joe@joe.com        1/1/2012

                          2/2/2012

                          3/3/2012

目前我的代码:

控制器

$data['nurses'] = $this->users_model->get_nurse();

模型

public function get_nurse() {
    $this->db->select('name,email,date');
    $this->db->from('users');
    $this->db->join('user_experience', 'users.id = user_experience.user_id');
    $query = $this->db->get();

    return $query->result_array();
}

查看

<?php foreach ($rows as $row): ?>
echo $row['first_name'];
echo $row['email'];
echo $row['exp_date'];

然而,这会为每个用户和exp组合显示一个新行。我希望用户只显示一次。谢谢!

1 个答案:

答案 0 :(得分:1)

您的护士职能不应包括经验,因为它们是独立的实体。 让护士只返回护士信息,然后为每位护士get_experiences()并显示这些信息。所以你的控制器看起来像这样。

$data['nurses'] = $this->users_model->get_nurse();
foreach($data['nurses'] as $nurseObj) {
   $expM = new ExperienceModel($nurseObj->id);
   // Display/pass/generate nurse info
   $nurse_experiences = $expM->getExperiences();
   foreach($nurse_experiences as $ne) {
        // experience info
   }
}