CI 묻고 답하기

제목 액티브 레코드를 써서 테이블의 로우를 하나 가져오게 될때의 질문입니다.
글쓴이 마카오최 작성시각 2015/06/06 18:25:52
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 13780   RSS
코드이그나이터 공부중에 궁금한점이 생겨서 질문하게 되었습니다.
액티브 레코드를 써서 테이블의 로우를 하나 가져오게 되면

// 컨트롤러 --------------------------------------------------------------------------------
$mem_row = $this->Member->get_row($_POST['mem_id']);
print_r2($mem_row);
die();

// 모델 -------------------------------------------------------------------------------------
class Member extends CI_Model {
// 생략
function get_row($mem_id)
{
    $query = $this->db->get_where('member', array('mem_id'=>$mem_id));
    $result = $query->result_array();
    return $result;
}

그런데
위 소스와 같이 컨트롤러에서 die()를 걸어 멈추고 배열이 생성된것을 확인해 보면
아래와같이 2차배열의 형태로 가져오는것을 볼수 있는데요.

결과 화면
Array
(
    [0] => Array
        (
            [mem_no] => 1
            [mem_level] => 100
            [mem_id] => admin
            [mem_pass] => a4bc7aa9xxxxxxxrrrrrrrtt0692aaa
            [mem_name] => 관리자
            [mem_email] => test@test.com
            [mem_post1] => 123
            [mem_post2] => 456
            [mem_addr1] => 서울시 테스트구 테스트동
            [mem_addr2] => 테스트번지
            [mem_birth] => 1986-12-22
            [mem_sex] => m
            [mem_point] => 2000
            [mem_regist_time] => 2015-05-30 18:54:39
            [mem_modify_time] => 2015-05-30 18:54:43
            [mem_last_login_time] => 0000-00-00 00:00:00
            [mem_regist_ip] => 192.168.0.0
            [mem_ex1] => 확장필드1
            [mem_ex2] => 확장필드2
            [mem_ex3] => 확장필드3
            [mem_ex4] => 확장필드4
            [mem_ex5] => 확잘필드5
        )

)

이것을 그냥 1차의 형태로
Array
(
           [mem_no] => 1
            [mem_level] => 100
            [mem_id] => admin
            [mem_pass] => a4bc7aa9xxxxxxxrrrrrrrtt0692aaa
            [mem_name] => 관리자
            [mem_email] => test@test.com
            [mem_post1] => 123
            [mem_post2] => 456
            [mem_addr1] => 서울시 테스트구 테스트동
            [mem_addr2] => 테스트번지
            [mem_birth] => 1986-12-22
            [mem_sex] => m
            [mem_point] => 2000
            [mem_regist_time] => 2015-05-30 18:54:39
            [mem_modify_time] => 2015-05-30 18:54:43
            [mem_last_login_time] => 0000-00-00 00:00:00
            [mem_regist_ip] => 192.168.0.0
            [mem_ex1] => 확장필드1
            [mem_ex2] => 확장필드2
            [mem_ex3] => 확장필드3
            [mem_ex4] => 확장필드4
            [mem_ex5] => 확잘필드5
 )

이렇게 받게 하는 엑티브 레코드는 원래 지원이 안되는건가요?
메뉴얼을 보고 이방법 저방법으로 해봤는데 전부 저런식으로 배열인덱스안에 배열이 들어가는 2차 형태로 되어
여러개의 리스트를 받아 처리하기에는 좋은데
한개의 로우만 받아 처리 하려고 하니 굳이 2차 배열로 생성할 필요가 없을것 같아서요.

저렇게 2차 배열로 되어있는 특정값을 사용하기 위해
모델에서 리턴시킬때 $result[0] ?? 으로 하는것도 좀 이상한것 같고

그렇다고 컨트롤러에서 

$mem_row[0]['mem_id'] 과 같은 식으로 일일이 처리하는것도 좀 이상한것 같아서요..

엑티브 레코드를 사용하여 1차 배열의 형태로 뽑아내려면 어떤 명령을 사용하여야 하는것인가요?
 다음글 교재 연습하다가 57쪽에서 막혔습니다. (1)
 이전글 cli관련 질문드립니다 (1)

댓글

방문넷 / 2015/06/06 19:38:50 / 추천 0
 $result = $query->result_array(); 를
$result = $query->row_array(); 로 해보세용!!
마카오최 / 2015/06/06 19:53:04 / 추천 0
방문넷 님 감사합니다 ㅜ~
row_array()를 사용하니 바로 의도하려는대로 나옵니다..
3글자만 바꾸면 되는거였군요 ㅠㅜ
제가 너무 무지했네요..
답변 감사합니다 ^^
 
방문넷 / 2015/06/06 20:20:13 / 추천 0
^^ 별말씀을요.
매뉴얼 보다사 사이트 들어왔는데 마침 보던게 질문글로 올라와서 냉큼 까먹기전에 답변 달아드린거일뿐입니다 ㅎ