2011-12-01 53 views
2

我在我的本地XAMPP使用的Kohana/ORM試過,我得到以下錯誤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應用程序的常見錯誤,但我還沒有發現任何線索來解決它。

模型僅僅是基本的ORM

class Model_Product extends ORM { 

} 

MySQL表(InnoDB的 - UTF-8)有兩個字段 ID - 初級INT 名字 - 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:

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

看起來多餘前行979考慮:

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

合併兩次同樣的陣列無用的,特別是當數組是這樣的:

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框架打開一個bug報告。

評論欄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