2011-12-01 2 views
2

문자열 변환 오류에 배열하고 난 다음과 같은 오류를 얻을Kohana ORM : 내 로컬 호스트 XAMPP에 Kohana/ORM을 사용하여 시도

ErrorException [공지] : 문자열 변환 MODPATH \의 ORM \ 클래스 배열 \ kohana \ ORM .PHP는 [980]

975    } 
976    else 
977    { 
978     // List columns and mirror for performance 
979     $this->_table_columns = $this->list_columns(); 
980     $this->_table_columns = array_combine($this->_table_columns, $this->_table_columns); 
981 
982     // Load column cache 
983     ORM::$_column_cache[$this->_object_name] = $this->_table_columns; 
984    } 
985   } 

다른 프레임 워크/PHP 응용 프로그램에 나타나는 일반적인 오류 것 같다,하지만 난 그것을 해결하기 위해 어떤 단서를 발견하지 않았습니다. 두 개의 필드 ID가 - 차 INT 이름 - -

모델은 바로 기본 ORM

class Model_Product extends ORM { 

} 

MySQL의 표 (UTF-8 이노)는 어떤 부두 어디 VARCHAR (50)

도움 매우 감사합니다

미리 감사드립니다!

편집 : 요청 vardump

array(2) { 
    ["id"]=> 
    array(13) { 
    ["type"]=> 
    string(3) "int" 
    ["min"]=> 
    string(11) "-2147483648" 
    ["max"]=> 
    string(10) "2147483647" 
    ["column_name"]=> 
    string(2) "id" 
    ["column_default"]=> 
    NULL 
    ["data_type"]=> 
    string(3) "int" 
    ["is_nullable"]=> 
    bool(false) 
    ["ordinal_position"]=> 
    int(1) 
    ["display"]=> 
    string(2) "11" 
    ["comment"]=> 
    string(0) "" 
    ["extra"]=> 
    string(14) "auto_increment" 
    ["key"]=> 
    string(3) "PRI" 
    ["privileges"]=> 
    string(31) "select,insert,update,references" 
    } 
    ["name"]=> 
    array(12) { 
    ["type"]=> 
    string(6) "string" 
    ["column_name"]=> 
    string(4) "name" 
    ["column_default"]=> 
    NULL 
    ["data_type"]=> 
    string(7) "varchar" 
    ["is_nullable"]=> 
    bool(false) 
    ["ordinal_position"]=> 
    int(2) 
    ["character_maximum_length"]=> 
    string(2) "50" 
    ["collation_name"]=> 
    string(15) "utf8_general_ci" 
    ["comment"]=> 
    string(0) "" 
    ["extra"]=> 
    string(0) "" 
    ["key"]=> 
    string(0) "" 
    ["privileges"]=> 
    string(31) "select,insert,update,references" 
    } 
} 
+0

'var_dump ($ this-> list_columns())'를 질문에 추가하십시오. – hakre

+0

님이 vardump를 추가했습니다. – rootman

+0

사용중인 버전이 무엇입니까? – Kowser

답변

0

이 오류를 해결하는 방법을 찾았습니다. 모델의 테이블 열을 선언하기 만하면됩니다.

protected $_table_columns = array(
    'column' => NULL, 
    'names' => NULL, 
    'go'  => NULL, 
    'here' => NULL, 
    ...... 
); 

이렇게하면 문제가 제거되고 성능이 향상됩니다.

1

라인 980 :

979     $this->_table_columns = $this->list_columns(); 

이 같은 배열은 두 번 병합 :

980     $this->_table_columns = array_combine($this->_table_columns, $this->_table_columns); 

계정으로 이전 라인 979을 찍은 불필요한 보인다 쓸데 없는데, 특히 배열은 다음과 같습니다.

array(2) { 
    ["id"]=> 
    array(13) { 
    ["type"]=> 
    string(3) "int" 
    ["min"]=> 
    string(11) "-2147483648" 
    ["max"]=> 
    string(10) "2147483647" 
    ["column_name"]=> 
    string(2) "id" 
    ["column_default"]=> 
    NULL 
    ["data_type"]=> 
    string(3) "int" 
    ["is_nullable"]=> 
    bool(false) 
    ["ordinal_position"]=> 
    int(1) 
    ["display"]=> 
    string(2) "11" 
    ["comment"]=> 
    string(0) "" 
    ["extra"]=> 
    string(14) "auto_increment" 
    ["key"]=> 
    string(3) "PRI" 
    ["privileges"]=> 
    string(31) "select,insert,update,references" 
    } 
    ["name"]=> 
    array(12) { 
    ["type"]=> 
    string(6) "string" 
    ["column_name"]=> 
    string(4) "name" 
    ["column_default"]=> 
    NULL 
    ["data_type"]=> 
    string(7) "varchar" 
    ["is_nullable"]=> 
    bool(false) 
    ["ordinal_position"]=> 
    int(2) 
    ["character_maximum_length"]=> 
    string(2) "50" 
    ["collation_name"]=> 
    string(15) "utf8_general_ci" 
    ["comment"]=> 
    string(0) "" 
    ["extra"]=> 
    string(0) "" 
    ["key"]=> 
    string(0) "" 
    ["privileges"]=> 
    string(31) "select,insert,update,references" 
    } 
} 

문자열 키만 포함되어 있습니다. kohana 프레임 워크를 사용하여 버그 보고서를 열어야합니다.

의견 줄 980이 수정 될 때까지 행.

+0

당신이 옳다면, 그 라인은 쓸데없는 것입니다. 그러나 이것과 같은 종류의 에러가 발생하면 두 번째 에러가 발생합니다.하지만 이번에는 931 라인에 있습니다 : $ values ​​= array_combine ($ this -> _ table_columns, array_fill (0, count ($ this -> _ table_columns), NULL)); 나는이 문제를 kohana에보고하고 그들이 할 수있는 것을 볼 것이라고 생각한다. – rootman

+0

그런 불필요한 경계선에 대한 문제는 그들이 고고학적인 정보를 담고 있으며, 알 수 있듯이 결함을 숨기는 것이다. 당신이 묘사 한 바에 따르면, '$ this -> _ table_columns'는 어떤 상황에서는 배열을 포함하지 않습니다. 예상대로 나는 980 줄에서 거의 구제 할 수 없을 것입니다. if (! is_array ($ this -> _ table_columns)) 새로운 UnexpectedValueException ('배열이 아닙니다');을 던져 버리십시오 - 그러면 경고 대신 치명적인 오류가 발생하지만, 응용 프로그램을 정의되지 않은 상태로 두지 않습니다.백 트레이스를 통해 원인을 찾는 것도 도움이 될 수 있습니다. – hakre

+0

http://dev.kohanaframework.org/issues/4352에서 문제를 만들었습니다. 나는 이것이 코어 파일에서 주위를 돌보고 싶지 않으면 더 이상 개발을 방해하기 때문에 가능한 한 해결해야 할 문제라고 생각한다. – rootman

관련 문제