結論
https://github.com/rchavik/datasources
ここからMSSQLを拾ってきて使えばいいと思うよ。
前提
アプリケーションOS => Linux
言語 => PHP5.2以上
フレームワーク => cakePHP2系列
DBサーバー => SQLServer
既にSQLServerとPHPは連携済みとする
問題点
cakePHPのSQLserverへの接続はpdo-sqlsrvを前提としているらしい。
しかし、pdo-sqlsrvは.dll形式しか存在せず、つまりwindowsサーバー上にアプリケーションが載っていないとコレは利用できない。
解決策
選択肢
- cakePHPのDatasourceとかを書き換えてpdolib経由でSQLServerを利用する
- githubからmssql対応のコードを引っ張ってくる
- その他
たぶんどっちでもある程度の解決は出来る。
がどれも全く異なる対処方法をとっているので、絶対にコレがいい!とはいえないが、
簡単なのは2番の選択肢
1は意外と書き換えが大変。あと、記事内にサブクエリが発行できないとか書いてある。それは困る
ということで、今回はgithubからmssqlを引っ張ってきて対応。
手法
https://github.com/rchavik/datasources/tree/mssql-2.0
上記から
Mssql.php をapp/Model/Datasource/Database/Mssql.php
NativeDriverSource.php をapp/Model/Datasource/NativeDriverSource.php
に設置する
あとはいつもどおりに
Config/database.phpを書き換えますが、以下の変更が必須です。
public $default = array(
- 'datasource' => 'Database/Mysql',
+ 'datasource' => 'Database/Mssql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
とすると見事に動くと思います。