2013-12-09 3 views
0

codeigniter 프레임 워크를 사용하여 응용 프로그램을 실행하고 있습니다. 데이터베이스가 있습니다. 나는 datamapper ORM을 구현하고 싶다. 이후 datamapper - "모든 테이블에 id라는 기본 키가 있어야합니다".id가 아닌 기본 키 열 이름이있는 기존 데이터베이스 테이블이있는 Datamapper

모든 테이블에 자동 증가 정수 필드가 있습니다. 그러나 모든 경우에 열 이름은 "id"가 아닙니다. 내 user 테이블에서 자동 증가 정수 열 이름은 대신 user_id입니다. Datamapper를 사용하기 위해서 어떤 변화가 필요합니까?

A Database Error Occurred 

Error Number: 1054 

Unknown column 'id' in 'where clause' 

SELECT * 
FROM (`user`) 
WHERE `id` = 200 

Filename: D:\Projects\DealVector\dealvector\system\database\DB_driver.php 

Line Number: 330 

답변

0

원시 datamapper 라이브러리를 편집하는 것 외에는 해결책을 찾지 못했습니다. /application/libraries/datamapper.php의 datamapper 클래스에서 _get_by() 함수를 다음과 같이 수정했습니다. 내 모델에 var $table = 'user'; var $id = 'user_id';을 추가하고 if($field=='id'){ $field = $this->id; }을 datamappper 라이브러리에 추가했습니다.

/** 
* Get By 
* 
* Gets objects by specified field name and value. 
* 
* @ignore 
* @param string $field Field to look at. 
* @param array $value Arguments to this method. 
* @return DataMapper Returns self for method chaining. 
*/ 
private function _get_by($field, $value = array()) 
{ 
    //Custom Change 
    if($field=='id'){ 
     $field = $this->id; 
    } 

    if (isset($value[0])) 
    { 
     $this->where($field, $value[0]); 
    } 

    return $this->get(); 
}