3.4.1 数据库配置

CakePHP 会将数据库配置放到app/config/database.php 中。app/config/目录下默认的只有database.php.default文件,可以复制一份并命名为database.php,配置后的内容如下:

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' => '');

数据库连接配置默认都会使用$default,除非在model有新的连接,并用$useDbConfig等于新的连接进行赋值。举例:在我的实例中除了默认的数据库,还有另一个legacy数据库,我可以创建一个新的legacy数据库的连接数组(跟$default类似),在model里通过var $useDbConfig = 'legacy';进行数据库切换。

根据你的需求填写配置数组中key/value对的值。

Key Value
driver 数据库驱动的名字,CakePHP支持的数据库驱动有mysql, postgres, sqlite, pear-drivername, adodb-drivername, mssql, oracle, odbc.
persistent 是否使用数据库永久连接
host 数据库服务器的主机名或者IP地址
login 数据库登陆帐户的用户名
password 数据库登陆帐户的密码
database 你将使用的数据库名
prefix (可选) 数据库中表的前缀,如果你的表没有前缀直接将这个参数设为空字符串
port (optional) 连接数据库的TCP端口或者Unix socket
encoding 指定发送数据库查询语句到服务器的编码格式
schema 用于 PostgreSQL 数据库中,指定哪个计划将被使用

请注意这里的前缀只针对数据库中的表,并不针对model, 举例:如果你将前缀设置为 'prefix_',而你将要创建一个关联Apple,Flavor两个model的关联表,这个表的表名将是prefix_apples_flavors(而不是 prefix_apples_prefix_flavors)

关于这点,你可以参考CakePHP Conventions的附录,用CakePHP命名规则来给数据库表取名可以省掉你很多的配置,并且能获得很多功能。如果表名为:big_boxes,那么model就应该是BigBox,controller:BigBoxesController。为了使用方便,表的名字应该用小写的英文单词的复数形式,单词与单词之间用下划线分隔,bakers, pastry_stores, savory_cakes都是正确的表名。