CI 묻고 답하기

제목 view에서 foreach질문입니다.
글쓴이 달수 작성시각 2013/03/18 20:15:22
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15231   RSS
view에서요
html 코드
<? foreach($main_data->result() as  $d) : ?>
   메인 데이타 html 코드처리
  어쩔수 없이 view에서 모델을 호출하게 되었습니다.
  여기서서는 $d->regdate 를 가져오면 제대로 가져오는데
   $sub_data = $this->sub_model->get_sub_data($d->main_idx);
    <? foreach($sub_data->result() as $s) : ?>
          서브데이타 html처리
     <? endforeach;?>
    메인 데이타 html 코드처리
    그런데 문제가 여기서
    $d->regdate  등 값을 가져올라고 했더만 non-object 어쩌구 하면서 에러가 나더라구요
    그러니까 $d 오브젝트가 사라졌더라구요 그러니까 두번째 foreach에 들어가면서  위에 foreach  $d 가 사라지는거 같네요
    두번째 foreach안에서 $d 를 사용할려고 해도 에러가 나더라구요 이게 정상인가요?
   아무래도 위에 endforeach 만나면서 사라지는 같은데 ㅡㅡ;;
<? endforeach;?>
 다음글 멀티파일 업로드 질문입니다 (1)
 이전글 ci 를 사용하며 난관에 빠졌습니다. session 이... (22)

댓글

변종원(웅파) / 2013/03/18 21:45:11 / 추천 0
sub_model 모델 선언은 어디서? 그리고 컨트롤러와 모델에서 처리해서 넘기세요.

그리고 위와 같은 상황은 서버 부하를 일으킬 수 있습니다.

만약 20개의 리스트를 가져와서 다시 20번의 foreach문을 돌며 select를 하면
21번의 select가 일어납니다. 접속자가 적으면 문제가 안되나 접속자가 많으면
문제가 충분히 될 수 있는 부분입니다.

join으로 처리할 수 있도록 해보시고 db구조가 그렇게 처리할 수 없다면
구조개선을 하셔야 합니다.
홍구2 / 2013/03/19 12:35:53 / 추천 0
 이렇게 하지마시고, 애초에 view로 데이터를 넘겨주기 전에 다차원 배열로 생성하고 넘겨주셔야 합니다.
$data = array(
 array(
  'writer' = '홍굿',
  'timestamp' => 2102394823,
  'rows' => array(
   array(
    'subject'=> 'bbbb',
    'content' =>
   ),
   array(
    'subject'=> 'bbbb',
    'content' =>
   )
 )
)

view에서 아래와 같이 돌면 되지요.
foreach($data as $each):
  foreach($each['rows'] as $sub_each):
   // do something 
  endforeach;
endforeach;

케케케 / 2013/03/19 17:47:10 / 추천 0

저두 저런오류 가끔 낫엇는데 저건 컨트롤러 딴에서의 문제입니다
배열을 잘못생성하면 그런거같아요
그리고 모델을 왜 뷰에서하시는지?
컨트롤러와 모델에서 처리한걸 뷰로넘기세요

달수 / 2013/03/20 14:47:22 / 추천 0
에공 다른일때문에 답글을 못봤네요
제가 위에 어쩔수 없이 뷰에서 모델을 사용했다고 했는데 ;;
제가 드린질문은 뷰에서 모델을 사용하지 말라는게 아니고요 ;
값이 사라진다는게 질문내용이었습니다.
저거를 콘트롤러에서 하면은 좀 수정할게 많이 생겨서 어쩔수 없이 우선은 저렇게 한거구요

제 질문의 요점은 답변은 없네요 제가 질문을 올리면서 예상했던 답변들이네요
뷰에서 모델사용하지 말고 컨트롤에서 처리하고 뷰로 넘겨라 ㅡㅡ;;

답변 감사해요 지금은 어찌 처리했지만요 ^^;
위에 사라지는건 아무래도 뷰쪽 버그인가 ㅡㅡ;