LoginSignup
10
9

More than 5 years have passed since last update.

Linux上のcakePHP2からSQLServerへ接続するときのベタープラクティス

Posted at

結論

https://github.com/rchavik/datasources
ここからMSSQLを拾ってきて使えばいいと思うよ。

前提

アプリケーションOS => Linux
言語 => PHP5.2以上
フレームワーク => cakePHP2系列
DBサーバー => SQLServer

既にSQLServerとPHPは連携済みとする

問題点

cakePHPのSQLserverへの接続はpdo-sqlsrvを前提としているらしい。
しかし、pdo-sqlsrvは.dll形式しか存在せず、つまりwindowsサーバー上にアプリケーションが載っていないとコレは利用できない。

解決策

選択肢

  1. cakePHPのDatasourceとかを書き換えてpdolib経由でSQLServerを利用する
  2. githubからmssql対応のコードを引っ張ってくる
  3. その他

たぶんどっちでもある程度の解決は出来る。
がどれも全く異なる対処方法をとっているので、絶対にコレがいい!とはいえないが、
簡単なのは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',
    );

とすると見事に動くと思います。

10
9
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9