扩展Propel以模拟数据库功能

时间:2013-01-16 05:13:45

标签: activerecord orm propel

我需要将应用程序从MySQL转换为SQL Server。

有许多涉及MySQL数据库功能的硬编码查询,例如 NOW() LCASE() MATCH()AGAINST() ,它在SQL Server中具有相同的功能,但具有不同的语法和结构。

我选择 Propel ,因为它似乎很容易使用。

我正在寻找一种模拟数据库功能的方法,例如 NOW() {MySQL} GETDATE() { SQL Server} 通过扩展Propel类。

我认为是这样的:

$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)中创建具有相同目的的两个函数之间的完美解决方案。

因此,我可以使用 Function :: MD5(),而不是在我的PHP代码中使用 Function :: HASHBYTES(),因为它更简单,当我的应用程序连接到SQL Server数据库时,在内部调用 HASHBYTES()

0 个答案:

没有答案