データベースの接続設定は
config/Database.php で行います。PRODUCTION, TEST, DEVELOPMENTと、各実行環境ごとに接続設定を行うことができます。
$params = array("コネクションネーム" => array(
"package" => "パッケージ名",
"host" => "IPアドレス、またはホスト名",
"database" => "データベース名",
"user" => "接続ユーザ名",
"password" => "接続ユーザパスワード"
));
コネクションネームのデフォルトは "default" です。"default" の場合、多くの場面でコネクションネームの指定を省略することができます。
パッケージとデータベース&拡張モジュールの対応は下記の通りです。
- sabel.db.mysql : MySQL
- sabel.db.mysqli : MySQLi
- sabel.db.pgsql : PostgreSQL
- sabel.db.oci : Oracle
- sabel.db.ibase : Firebird/InterBase
sabel.db.mssql : Microsoft SQL Server ※現在サポート対象外
- sabel.db.pdo.mysql : MySQL(PDO使用)
- sabel.db.pdo.pgsql : PostgreSQL(PDO使用)
- sabel.db.pdo.oci : Oracle(PDO使用)
- sabel.db.pdo.sqlite : SQLite (PDO使用)
sabel.db.sqlite3: SQLite3 ※Sabel 1.2.1で追加予定
パッケージにsabel.db.pdo.sqliteを使用する場合は "package", "database" のみを指定すればOKです。
$params = array("default" => array(
"package" => "sabel.db.pdo.sqlite",
"database" => "/path/to/data.db"
));
クライアント文字セットを指定する必要がある場合は "charset" を含めてください。"charset" の値は抽象化されていないため、データベース固有の認識できる文字セットを指定してください。
$params = array("default" => array(
"package" => "sabel.db.mysql",
"host" => "localhost",
"database" => "test",
"charset" => "ujis",
"user" => "root",
"password" => ""
));
ActiveRecordのクラスで、そのオブジェクトが接続するデータベースを指定することができます。
$connectionName に接続先のコネクションネームを指定してください。("default" の場合はこの記述を省略することができます。)
app/models/User.php
class User extends Sabel_Db_Model
{
protected $connectionName = "userdb";
}
使用する機会は少ないかもしれませんが、動的に接続先を変更することもできます。
// "default" データベースから取得
$arUser->setConnectionName("default");
$users = $arUser->select();
// "backupdb" データベースから取得
$arUser->setConnectionName("backupdb");
$users = $arUser->select();