질문 Q #12463
config->constants 질문
undefined 2015-08-26 16:52:36
DB 테이블 컬럼이나 이름이 수정되는경우에 model단에 이름 번번히 바꿔줘야되는가 많은데요...

config/constants.php 파일에 

테이블명 , 컬럼명 이런것들을 define으로 정해 놓고 model불러올때나 쿼리 짤때 참조하면 관리가 수월 할거 같은데요..

다른분들은 어떻게 생각하세요????

예를 들어... 

constants.php 파일 안에...

define("CUST_TABLE_NAME" , "tb_cust");
define("CUST_TABLE_COL" , array("a" , "b" , "c" , "d" , "e"));

cost_model.php  파일에는..

$this->db->select(CUST_TABLE_COL[0] , CUST_TABLE_COL[1] , CUST_TABLE_COL[2]);
$this->db->from(CUST_TABLE_NAME");
$this->db->where(CUST_TABLE_COL[1] , "TEST");

$query = $this->db->get();

..
..
..

이런식으로 코딩을 하여 관리를 한다는거죠...

위에 같이 했을경우 문제가 될게 있을까요???
 
답변 7
#1 변종원(웅파) 2015-08-26 18:03:57
컬럼명 매칭이 안되서 항상 문서나 constants.php를 열어봐야 한다는 것이외에 특별한 단점은 없을 것 같네요.
그리고 배열을 바로 상수로 선언하지 못합니다. (php7부터 가능)
#2 한대승(불의회상) 2015-08-26 18:05:19
저의 개인적인 생각으론 테이블명과 컬럼명이 자주 바뀌지 않는다면 별로 수월해 보이지 않습니다.

시간이 조금 지나서 define 해놓은 규칙이 생각나지 않으면 매번 config/constants.php를 열어놓고 대조하면서 봐야 할겁니다.
$query = $this->db->select('a,b,c')->from('tb_cust')->where('b', 'test')->get();
컬럼명과 테이블명을 직접 기술 했을때와 비교하면 그 차이는 더욱 커질겁니다.
 
#3 하늘치 2015-08-26 18:14:09
flexi-auth 에서 비슷한 걸 본 것 같습니다.
#4 하늘치 2015-08-26 18:18:34
https://github.com/haseydesign/flexi-auth/blob/master/demo_files/application/config/flexi_auth.php
#5 undefined 2015-08-26 18:21:47
//변종원// //한대승// //하늘치// 답변 감사합니다..

고민이 해결되는것 같네요..ㅎㅎ 

Model명이나 , 테이블명정도는 만들어놔도 문제없을듯 싶네요...

지금 버전업 준비하면서 데이터베이스 안에 구조도 많이 변경되는 부분때문에 저런 고민하게 되었습니다..

 
#6 undefined 2015-08-26 18:26:41
flexi-auth 요건 정말 어렵네요..;; 복잡해서 사용하기 힘들듯..ㅠㅠ
#7 들국화 2015-08-27 13:09:32
디비구조로 모델을 만들어주는 라이브러리들이 있습니다.
한 10여년 전에도 비슷한걸 만들어 봤고요.
제생각에는 별로 유용할것 같지 않네요. 다시 뒤져야 하는 불편함도 있고 상수를 따로 설정하면 메모리도 더 잡아 먹고 구지 상수로 할 필요가 있을까 모르겠네요.
배열 상수를 선언하려면 serialize를 해서 선언해야 할거에요.