【问题标题】:codeigniter how to retrieve data from two tablescodeigniter如何从两个表中检索数据
【发布时间】:2012-12-10 22:29:36
【问题描述】:

我有两张桌子:

users: id, name, email

user_experience: id_exp, user_id, exp_date

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

例如

用户:

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 组合显示一个新行。我希望用户只显示一次。谢谢!

【问题讨论】:

    标签: php codeigniter


    【解决方案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
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2013-06-28
      • 2020-03-29
      • 2021-06-04
      • 2023-04-04
      • 2012-12-09
      相关资源
      最近更新 更多