| 제목 | 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 에 작성하면 됩니다.