제목 | core model 두 종류의 model로 분개시킬려고 합니다. | ||
---|---|---|---|
글쓴이 | 엠제이 | 작성시각 | 2015/10/21 14:59:01 |
|
|||
개념으로 보자면 CI_Model -> MY_Model -> MY_View_model OR MY_Data_model -> 일반 모델 (User_view_model or User_data_model) 로 분개시킬려고 합니다. 1. 코어에 등록시킬 방법은 system에 접근해야 하는건가요? (정말 하고 싶지 않습니다ㅠㅠ) - MY_Model 을 만들지 않고 CI_Model을 상속받은 CI_View_model , CI_Data_model을 바로 만들어서 컨트롤러에서 사용할 수 있는 방법은 없는가요? 2. MY_Model을 일단 만들고 (CI_Model 상속만 받고) MY_View_model 과 MY_Data_model 은 Model 폴더에 만들고 일반 모델들은 include MY_View_model or MY_Data_model 하는 방법에 대해서는 어떻게 생각하시나요? 글을 좀 못 써서....ㅠ 질문에 이상한 부분이 있다면 빠른 댓글로 답장하겠습니다 ㅠ 하...쉽게 설명하자면...ㅎㅎㅎ 일반 모델들은 두가지의 모델로 만들어질 수 있는데 select 관련된 view model 과 insert update delete 함수가 있는 data_model 로 만들어 질 수 있습니다. view_model 과 data_model은 CI_Model을 상속받은 상태입니다. 파일 배치와 상속방법에 대해 서술하시오. 본격 입사문제 스타일! 이렇게 질문하는 게 왜 더 편하게 글이 써질까요? ㅠㅠ |
|||
다음글 | 지금 셋팅된 ci 버젼이 몃인지 체크를 할려고 하는데 ... (2) | ||
이전글 | 헤더파일에 데이터 넣을 때 질문입니다. (2) | ||
한대승(불의회상)
/
2015/10/21 15:13:04 /
추천
0
|
엠제이
/
2015/10/21 15:21:13 /
추천
0
$this->load->view_model('user_view_model'); $recent_sign_up_user = $this->user_view_model->get_view('recent_sign_up_user'); $user_data = array(); $this->load->data_model('user_data_model'); $this->user_data_model->insert($user_data); // insert, update, delete 함수는 data_model에서 상속받음. 이런 식으로 컨트롤러에서 사용하고 싶은데..ㅋㅋ 설명이 참..어렵네요.. |
엠제이
/
2015/10/21 15:28:01 /
추천
0
load->database(); } } class View_model extends FX_Model { public function __construct() { parent::__construct(); $this->load->database(); } } class Data_model extends FX_Model { public function __construct() { parent::__construct(); $this->load->database(); } } ?> 이 방법을 써도 괜찮은 걸까요?? class User_view_model extends View_model { public function __construct() { parent::__construct(); $this->load->database(); } public function test() { //$this->db->trans_begin(); $this->db->set('user_id', 'test'); $this->db->insert('user'); $value = $this->test2(); return $value; } public function test2() { return 'a'; } } ?> 정상 작동은 합니다 ㅎㅎㅎ |
한대승(불의회상)
/
2015/10/21 15:28:16 /
추천
0
모든 모델은 $this->load->model() 을 사용해야 합니다.
$this->load->model('user_view_model'); $this->load->model('user_data_model');user_view_model 이나 user_data_model 은 클래스 명이므로 로드 클래스를 새로 확장하는것은 의미가 없습니다. 각 class가 어떤 class를 상속 받았는지가 중요한거죠. class User_view_model extends MY_View_model { } class User_data_model extends MY_Data_model { }이렇게 선언하고 $this->load->model()로 로드 하면 됩니다. |
엠제이
/
2015/10/21 15:42:27 /
추천
0
접두어는 FX이고요. FX_Model은 이렇게 구현 <?php class FX_Model extends CI_Model { public function __construct() { parent::__construct(); $this->load->database(); } } abstract class View_model extends FX_Model { abstract protected function get_view($view_name, $where_array, $order_array, $offset_limit_array); public function __construct() { parent::__construct(); $this->load->database(); } } abstract class Data_model extends FX_Model { abstract protected function insert($data_array); abstract protected function update($where_array, $data_array); abstract protected function delete($where_array); public function __construct() { parent::__construct(); $this->load->database(); } } ?> User_view_model.php 는 <?php class User_view_model extends View_model { public function __construct() { parent::__construct(); $this->load->database(); } public function get_view($view_name, $where_array, $order_array, $offset_limit_array) { //DB 모든 select 부분을 view 로 구현해둠 } } ?> User 컨트롤러는 <?php class User extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url'); //$this->load->library('session'); } public function index() { $this->load->model('user_view_model'); $user_list = $this->user_view_model->get_view('user', null, null, null); } } 이렇게 만들어봤어요. 그냥 딱히 이유는 없지만..ㅠ 뭔가 작업하기 좋지 않을까 해서 이런식으로 구성해봤어요 ㅠ |
한대승(불의회상)
/
2015/10/21 15:51:56 /
추천
0
FX_model 에서 $this->load->database()를 호출 했으니 확장된 View_model 이나 Data_model 에서는 호출 하지 않아도 됩니다.
|
엠제이
/
2015/10/21 16:03:22 /
추천
0
//불의회상
아하. 감사합니다 |
필요한 class들을 system을 건들지 않고 정의 하려면 application/core/MY_Model.php 에 작성하면 됩니다.