| 제목 | 모델 load 시 파라메터의 차이를 아시는분... | ||
|---|---|---|---|
| 글쓴이 | 신개발자 | 작성시각 | 2013/11/27 13:09:40 | 
| 
                         | 
                |||
| 
                          1> $$this->load->model('모델명'); 방식으로 하고 모델.php 의 __construct 에서 database를 로드 하는 방식으로 넣고 있습니다. function __construct() 
    { 
        // Call the Model constructor 
        parent::__construct(); 
$this->db = $this->load->database('DB명', TRUE);     } 
select 를 할땐 1번으로 가능한데 insert 또는 update 는 1번 방식으로 안되더라구요.그 후 $this->load->model('모델명' , '' , 'DB명'); 으로 db를 load 하니까 insert 가 되던데, 이 두가지 방식의 차이가 몬지 아시는분 계신가요???  | 
                |||
| 다음글 | 로그인 페이지를 만들려고 합니다! (2) | ||
| 이전글 | application 폴더를 그대로 카피해서 쓰는데.. (3) | ||
| 
                             
                                변종원(웅파)
                                /
                                2013/11/27 13:35:29 /
                                추천
                                0
                             
                            
                                질문에 답이 있는데요? 모델 로딩할때 파라미터 넘겨서 그 db설정을 여는겁니다. config/databases.php 열어보세요
                             
                         | 
                    
| 
                             
                                신개발자
                                /
                                2013/11/27 14:10:33 /
                                추천
                                0
                             
                            
                                그런데 모델 파일 생성자에서 이미 db 설정을 열었어요, 
                        function __construct()     {         // Call the Model constructor         parent::__construct(); $this->db = $this->load->database('DB명', TRUE);     } 이상태에서 $$this->load->model('모델명'); 식으로 모델명을 로드 하고 selct 를 하면 이상이 없는데 insert나 update 할 때 $this->db->insert('todo_person', $data); 이 부분에서 codeigniter call to undefined method ci_db_mysql_driver::insert() 라는 에러가 떨어지더라구요. insert 를 할때에는 모델을 로드할 때 db설정을 또 열어줘야하는건가요?  | 
                    
| 
                             
                                변종원(웅파)
                                /
                                2013/11/27 14:37:08 /
                                추천
                                0
                             
                            
                                insert, update 모델은 동일한 모델파일안에 있는건가요? 
                        아니면 다른 모델에? 소스를 올려주시면 원인파악이 빠를 것 같네요. db 라이브러리 로드가 안되서 그런걸겁니다.  | 
                    
| 
                             
                                신개발자
                                /
                                2013/11/27 17:16:47 /
                                추천
                                0
                             
                            test.php require(APPPATH.'libraries/REST_Controller.php'); class Test extends REST_Controller {  // Constructor function  public function __construct()  {   parent::__construct();   $this->load->library('session');  }  public function classifyList_get()   {    $idx = $this->get('idx');    $this->load->model('Test_Model');    $result = array();    $result = $this->Test_Model->classifyList_get($idx);    if ($result){     $res = array('success'=>true,'result'=>$result);    }    else {     $res = array('success'=>false,'error'=>'오류.');    }    $this->output($res);   }  public function saveNewList_post()   {    $this->load->model('Test_Model','','dev');    $priority = $this->post('priority');      $list_idx = $this->Test_Model->insert_todoList($priority);  if ($result){    $res = array('success'=>true,'result'=>$result);   }   else {    $res = array('success'=>false,'error'=>'오류.');   }   $this->output($res);  }   } test_model.php class Test_Model extends CI_Model {     function __construct()     {         // Call the Model constructor         parent::__construct();   $this->db = $this->load->database('dev', TRUE);     }  function insert_todoList($priority){   $data = array(    'priority'  => $priority   );   $this->db->insert('test_list', $data);   // 이부분에서 codeigniter call to undefined method ci_db_mysql_driver::insert() 가 생깁니다.   $last = $this->db->insert_id();   return $last;  }  function classifyList_get($idx){    $sql = ";    ";   $query = $this->db->query($sql);   return $query->result_array();  } } 보시면 test_model 생성자에서 database 를 접근하게 햇거든요.. 위 소스에서 select 를 할때 1> $this->load->model('Test_Model'); 경우가 상관이없는데 insert 하는부분에 1>을 넣어주면 에러가 떨어지더라구요. 1> $this->load->model('Test_Model'); 2> $this->load->model('Test_Model','','dev'); 1번의 경우는 select 만 가능한것인지 , 아니면 제가 소스상에 문제가 있는건지 모르겠네요. 2번의 경우는 정상적으로 되구요.  | 
                    
| 
                             
                                변종원(웅파)
                                /
                                2013/11/27 17:51:45 /
                                추천
                                0
                             
                            
                                ci가 아닙니다. 당연히 ci의 라이브러리를 사용못하죠 
                        require(APPPATH.'libraries/REST_Controller.php'); 
class Test extends REST_Controller 
                            매뉴얼에서 컨트롤러 어떻게 선언하는지 보세요. 저렇게 외부 rest 클래스를 로딩하면 당연히 ci의 내부 라이브러리를 사용할 수 없습니다. 작동되는게 신기하네요. (ci가 너무 느슨한듯...)  | 
                    
| 
                             
                                한대승(불의회상)
                                /
                                2013/11/27 18:01:05 /
                                추천
                                0
                             
                            
                                REST_Controller class가 CI_Controller를 상속받았다면 사용 가능하실겁니다. ^^
                             
                         | 
                    
| 
                             
                                신개발자
                                /
                                2013/11/27 18:17:09 /
                                추천
                                0
                             
                            
                                아 감사합니다 ㅠㅠ 좀더 꼼꼼히 봤으면 될 문제였군요...ㅎㅎ 
                         |