0

私は2つのテーブルを持っています:

users: id, name, email

user_experience: id_exp, user_id, exp_date

複数のユーザーがいて、各ユーザーは複数のエクスペリエンスを持っています。

例えば

ユーザー:

1, david, david@david.com 

3つの経験にリンクされています

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'];

ただし、これにより、ユーザーと経験値の組み合わせごとに新しい行が表示されます。ユーザーを一度だけ表示したい。ありがとう!

4

1 に答える 1

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
   }
}
于 2012-12-10T22:37:23.663 に答える