資料庫是oracle11g,一開始以為是oracle欄位大小寫問題導致的,後來把post索引全改大寫,依然不好使,create返回空
class TestAction extends Action{function add(){if(IS_POST){$m=D('Test'); //post索引改大寫$_POST=array_change_key_case($_POST,CASE_UPPER);show_bug($_POST);$vo=$m->create(); //返回空數組show_bug($vo);//返回falseshow_bug($m->add());//->add();show_bug($m->_sql());}else{$this->display();}}}
求解 !!
回複討論(解決方案)
應該是的吧?
create 是從模型中建立自動驗證
而模型你是怎麼建立的?
對於 MySQL,TP 是使用 DESCRIBE 指令擷取欄位資訊的
但 oracle 並沒有 DESCRIBE 指令,那麼 TP 還會替你完成嗎?
應該是的吧?
create 是從模型中建立自動驗證
而模型你是怎麼建立的?
對於 MySQL,TP 是使用 DESCRIBE 指令擷取欄位資訊的
但 oracle 並沒有 DESCRIBE 指令,那麼 TP 還會替你完成嗎?
模型中唯寫了個trueTableName,那是create方法不支援oracle嗎?
不知道現在的 TP 支援 MySQL 以外的資料庫到什麼程度
按說是應該給每個表建一個表結構檔案的
show_bug($m->_sql()) 結果:
select a.column_name,data_type,decode(nullable,'Y',0,1) notnull,data_default,decode(a.column_name,b.column_name,1,0) pk from user_tab_columns a,(select column_name from user_constraints c,user_cons_columns col where c.constraint_name=col.constraint_name and c.constraint_type='P'and c.table_name='TEST1') b where table_name='TEST1' and a.column_name=b.column_name(+)
是用來擷取欄位資訊的:
解決了,算是TP的bug吧。必須在模型裡指定fields
主要是oracle沒有DESCRIBE,所以TP實現不到,但又沒有專門處理這個問題。
只能模型裡指定fields解決。