3.4.1 Database Configuration

CakePHP의 데이터베이스 구성 내용은 기본적으로 app/config/database.php 파일에 있어야 합니다. app/config/database.php.default는 데이터베이스 구성 예제 파일입니다. 다음과 같은 식으로 설정을 해주면 됩니다.

var $default = array('driver'      => 'mysql',
                     'persistent'  => false,
                     'host'        => 'localhost',
                     'login'       => 'cakephpuser',
                     'password'    => 'c4k3roxx!',
                     'database'    => 'my_cakephp_project',
                     'prefix'      => '');
  1. var $default = array('driver' => 'mysql',
  2. 'persistent' => false,
  3. 'host' => 'localhost',
  4. 'login' => 'cakephpuser',
  5. 'password' => 'c4k3roxx!',
  6. 'database' => 'my_cakephp_project',
  7. 'prefix' => '');

모델에서 $useDbConfig 속성으로 다른 연결을 지정해 주지 않는 한 $default라는 배열 타입의 연결을 사용합니다. 예를 들자면, 응용 프로그램에서 기본 데이터베이스 말고도 추가로 이전 버전 데이터베이스를 사용한다면 $default 배열과 비슷하게 $legacy라는 데이터베이스 연결 배열을 만들어 주고서 적절한 모델에서 var $useDbConfig = 'legacy'; 라고 해서 사용할 수 있습니다.

각자의 필요에 따라 구성 배열의 키/값 내용을 채워주면 됩니다.

driver 이 구성 배열이 쓰는 데이터베이스 드라이버의 이름. 예: mysql, postgres, sqlite, pear-드라이버명, adodb-드라이버명, mssql, oracle, odbc.
persistent 데이터베이스에 지속적인(persistent) 연결을 사용할 것인지 여부.
host 데이터베이스 서버의 호스트 이름 (또는 IP 주소).
login 사용자 계정 이름.
password 사용자 계정 암호.
database 이 연결에서 사용할 데이터베이스의 이름.
prefix (선택적) 데이터베이스의 모든 테이블 이름 앞에 추가할 문자열. 사용하려는 테이블이 접두 문자열을 사용하지 않는다면 빈 문자열로 설정하면 됩니다.
port (선택적) 서버에 연결하기 위한 TCP 포트 또는 유닉스 소켓.
encoding 서버로 SQL문을 보낼 때 사용할 문자셋.
schema PostgreSQL 데이터베이스 설정에서 사용할 스키마를 지정할 때 사용.

주의할 점은 prefix 설정이 테이블에 대한 것이지 모델에 대한 것이 아니라는 점입니다. 예를 들어 Apple 및 Flavor 모델에 대한 조인 테이블을 만들었다면 그 테이블의 이름을 (prefix_apples_prefix_flavors가 아니라) prefix_apples_flavors라고 짓고서 prefix를 ‘prefix_’로 설정해 주면 됩니다.

이쯤에서 CakePHP 관례를 살펴보는 것도 좋겠군요. 테이블의 (더불어 일부 컬럼의) 이름을 잘 지어주면 몇몇 기능들이 저절로 제공되며 설정을 생략할 수 있습니다. 예를 들어 데이터베이스 테이블의 이름을 big_boxes라고 하고, 모델 이름은 BigBox로, 컨트롤러는 BigBoxesController로 하면 자동으로 모든 게 동작합니다. 관례에 따라서 데이터베이스 테이블 이름에는 밑줄 문자와 소문자를 사용하며, 복수 형태를 씁니다. bakers, pastry_stores, savory_cakes 같은 식입니다.