アプリケーションを MySQL から SQL Server に変換する必要があります。
NOW()、LCASE()、MATCH() AGAINST()などの MySQL データベース関数を含む多くのハードコーディングされたクエリがあり、これらは SQL Server と同等ですが、構文と構造が異なります。
使いやすそうなのでPropelを選びました。
Propel クラスを拡張して、 NOW() {MySQL}やGETDATE() {SQL Server}などのデータベース関数をエミュレートする方法を探しています。
私はこのようなことを考えます:
$result = Function::NOW(); // MySQL
$result = Function::GETDATE(); // SQL Server
関数がLCASE() {MySQL}やLOWER() {SQL Server}などのパラメーターを受け入れる場合、次のようになります。
$table = new MyTable();
$result = Function::LCASE($table->getName()); // MySQL
$result = Function::LOWER($table->getName()); // SQL Server
また
$table = new MyTable();
$result = Function::MD5($table->getPassword()); // MySQL
$result = Function::HASHBYTES('MD5', $table->getPassword()); // SQL Server
完全な解決策は、異なるデータベース (MySQL と SQL Server) から同じ目的を持つ 2 つの関数間で等価性を作成できる場合です。
したがって、 PHP コードでFunction::HASHBYTES()を使用する代わりに、常にFunction::MD5()を使用できます。これは、より単純であり、アプリケーションが SQL Server データベースに接続されている場合、内部的にHASHBYTES()が呼び出されます。