제목 | CI적으로 이런문제 처리 가능할까요? | ||
---|---|---|---|
글쓴이 | 수야디벨 | 작성시각 | 2013/07/24 11:17:39 |
|
|||
음 .. 이게 CI질문인지 CI외 질문인지 잘 모르겠는데, 회원페이지를 구성중인데요 , 회원 페이지에 보여지는 내용은 별건 없습니다. 이름 / 아이디 / 닉네임 / 패스워드 / 글 게시물 수 근데 여기서 문제가 되는건 글 게시물 수! 인데요, 앞의 4가지는 (이름 / 아이디 / 닉네임 / 패스워드) DB의 회원DB만 조회하면 얻을수있는 결과인데 반면해, 글 게시물수는 글 게시물 DB의 작성자 ID를 회원 아이디와 매칭, COUNT해서 정확히 가져오려고 하거든요! 앞의 4개의 정보는 간단하게 회원DB만 조회하면 얻어올수 있는데 .. 코드로 보면 * controller //.회원리스트 전체 출력
$this->load->model('member_model'); $data['member'] = $this->member_model->getMember(); * 모델 function getMember(){
$data= $this->db->get('member');
return $data->result();
}
그래서 이를 가지고($data['member']) view 단에서 foreach($member as $row) : $row->index; $row->name; 등등등 foreach사이에 표현해주고 싶은것을 배치. endforeach; 이렇게 표현해 주면 되었었거든요? 그런데, 아무리 생각해도 글 게시물수를 같이 얻어오는 방법이 생각이 나질 않습니다.ㅠ 우선, function getMember(){
$data= $this->db->get('member');
return $data->result();
}
에서 글 게시물수를 join해서 결과를 리턴한다고 가정하면, 만약 글 게시물을 3건했다면, join의 결과에 의해서 해당 회원정보는 비록 하나일지라도, 검색은 3번이 될텐데, 실제적으로 앞의 4개(이름 / 아이디 / 닉네임 / 패스워드) 는 똑같을거 아니에요? 이를 foreach로 돌리면, 똑같은 결과가 3번이나 출력이 되버리는데 .. 그래서 아래처럼 해봤었었습니다. function member(){
//.회원리스트 전체 출력
$this->load->model('member_model');
$data['member'] = $this->member_model->getMember();
foreach($data['member'] as $row):
$id = $row->id;
endforeach;
//생성한 프로젝트 조회
$this->load->model('member_model');
$data['project_count'] = $this->member_model->getProjectCount($id);
$this->load->view('member',$data);
}
근데 아뿔싸! 저렇게 id를 던져주면 될꺼같았는데, 안되길래 생각해보니까 , $id에 들어가는 값이 배열의 가장 마지막 값이 들어가니까 ..안된다는거 .. 음 .. 그래서 이제 제가 생각하는 마지막 방법은 기존 소스를 그대로 쓰고 foreach endforeach 사이에 echo "<script>innerCount(<?=$row->id;?>)프로젝트를 카운트해주는 ajax 스크립트</script>"를 이렇게 넣어주면 개개인의 id를 스크립트에서 처리할수 있으니까 가능할꺼같은데 너무 복잡해서요 그러면 .. 그래서 혹시나 ci에서 간편하게 할수있는 방법이 없을까해서 여쭈어봅니다 ~ㅠ |
|||
다음글 | php seed 암호화 라이브러리 구할곳 없을까요? (1) | ||
이전글 | ci버전 업그레이드 및 ci에 hmvc 적용관련 질문입... (2) | ||
하루살이
/
2013/07/24 11:56:21 /
추천
0
|
변종원(웅파)
/
2013/07/24 12:12:09 /
추천
0
순서대로 정리해보면..
1. 회원정보를 가져오는 쿼리, 그 회원정보에 대한 게시물수 쿼리를 따로 작성한다. (초보) 2. 회원정보 가져오는 쿼리와 서브쿼리로 게시물수 가져오는 쿼리를 써서 하나의 쿼리로 작성한다. 서브쿼리 검색해서 적용하세요. |
수야디벨
/
2013/07/24 13:40:18 /
추천
0
웅파 // 하루살이// 아~ 서브쿼리! 그런게 있었군요 . 끙 ..ㅋㅋ 감사합니다 ㅎㅎ |
select
a.*,ifnull(b.cnt,0) board_cnt
from member as a
left join (
select member_id,count(*) as cnt
from board
group by member_id) as b on a.member_id = b.member_id
다음과 같이 DB에서 직접 쉽게 가져올수 잇어요