【发布时间】:2014-03-29 16:53:12
【问题描述】:
我在 oracle 10g 中使用 php-activerecord。我遇到了 oracle 列区分大小写的问题。
class Employee extends ActiveRecord\Model{
static $table_name = 'EMPLOYEE';
static $primary_key = 'PERSON_ID';
static $belongs_to = array(
array('supervisor', 'class_name' => 'Employee','foreign_key'=>'SUPERVISOR_ID')
);
}
测试:
$employee = Employee::first();
echo $employee->supervisor_ID; // Does not work - Oracle Columns are case sensitive
echo $employee->SUPERVISOR_ID; // Prints ID
$employees = Employee::find('all', array('limit' => 10, 'include' => array('supervisor')));
错误:
Fatal error: Uncaught exception 'ActiveRecord\UndefinedPropertyException' with message 'Undefined property: Employee->supervisor_id
当我将外键定义为 SUPERVISOR_ID 时,为什么要寻找小写的 supervisor_id?我可以让它不区分大小写吗?我很感激帮助。 Google 今天让我失望了。
更新:
我在 yii 框架网站上找到了这个:
“原因似乎只是部分与 Oracle 相关。Oracle 不依赖于列名的大小写敏感,只要它们没有在引号内指定。如果是这样,它会按照提供的准确列名拼写。因此,似乎在 ActiveRecord 下面的 Yii 代码中的某处必须有一部分用引号对表名进行转义,从而产生上述问题。”
^^ 所以看来我需要在某处破解 phpactiverecord 代码,以便在列名周围没有引号。我猜phpactiverecord对oracle很糟糕。性能应该也很差。
【问题讨论】:
标签: php oracle phpactiverecord