いくつかのテーブルからユーザー データを取得しているだけですが、ユーザーには複数のスキルまたは経験値を追加するオプションがあります。
$query_str = "SELECT a.*, b.*, c.*, d.*, e.* FROM edu a
JOIN exp b ON a.user_id=b.user_id
JOIN user_profiles c ON a.user_id=c.user_id
JOIN skills d ON a.user_id=d.user_id
JOIN comp e ON a.user_id=e.user_id
WHERE a.user_id = ?";
$query = $this->db->query($query_str, $end_user);
if($query->num_rows() > 0) {
foreach($query->result_array() as $stuff) {
$data[] = $stuff;
}
return $data;
} else {
return false;
}
データを表示しようとするまで、すべて問題ありません。ユーザーが 2 つの exp を持っている場合、他のすべてが 2 回表示されます。これを書く方法がわかりません。それらを分離した方が簡単でしょうか?アイテムごとに 1 つのクエリ?
public function get_education()
{
$one_edu = $this->test_model->one_edu($end_user);
if ($one_edu != false)
{
foreach($one_edu as $edas) {
$one_edu_html .='<p>'.$edas['objective'].'</p>';
}
foreach($one_edu as $exp) {
$one_edu_html .= '<p>'.$exp['exp_title'].'</p>';
}
foreach($one_edu as $educ) {
$one_edu_html .= '<p>'.$educ['edu_title'].'</p>';
}
$result = array('status' => 'ok', 'content' => $one_edu_html);
echo json_encode($result);
exit();
}else{
$result = array('status' => 'ok', 'content' => '');
echo json_encode($result);
exit();
}
}
今、次のようなものを返します:
Objective
Exp title1
Exp title2
Edu title
Edu title <- Extra
コードイグナイターの使用