2014-02-26 1 views
0

oracle 10g에서 php-activerecord를 사용하고 있습니다. Oracle 칼럼이 대소 문자를 구별하는 문제가 있습니다.php-active record 오라클 케이스 sensative columns

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'))); 

오류 : 나는 SUPERVISOR_ID 등의 외부 키를 정의 할 때

Fatal error: Uncaught exception 'ActiveRecord\UndefinedPropertyException' with message 'Undefined property: Employee->supervisor_id 

왜 소문자 supervisor_id를 찾고 있습니까? 대소 문자를 구분하지 않을 수 있습니까? 도움에 감사드립니다. Google은 오늘 나에게 실패했다.

UPDATE :.

"원인은 부분적으로 만 오라클 관련 될 것으로 보인다 오라클만큼 열 이름의 대소 문자 구분에 의존하지 않습니다

나는 YII 프레임 워크 웹 사이트에서 이걸 발견

그렇다면 정확한 열 이름 철자가 제공되므로 ActiveRecord 아래에있는 Yii 코드의 어딘가에 테이블 이름을 따옴표로 이스케이프하는 부분이 있어야 할 것입니다. . "

^^ 필자는 phpactiverecord 코드를 어딘가에 열 이름 주위에 따옴표가 없도록 해킹해야 할 것 같습니다. 나는 phpactiverecord가 오라클에 엉터리라고 생각한다. 성능도 좋지 않습니다.

답변

0

다른 사람이 이에 대한 대답을 찾고 있다면, 나는

public function variablize($s) { 
     return str_replace(array('-','  '),array('_','_'),strtolower(trim($s))); 
} 

내가 strtoupper하는 strolower을 변경 Inflector.php

에 아래로 추적, 그것은했다.

소문자를 추가하면 속성

static $alias_attribute = array(
     'supervisor_id' => 'SUPERVISOR_ID', 
     'last_nm' => 'LAST_NM'); 

내 문제가 해결되지 않았다. 누군가 거기에 더 나은 해결책이 있기를 바랍니다.