>백엔드 개발 >PHP 튜토리얼 >TP create函数无效

TP create函数无效

WBOY
WBOY원래의
2016-06-20 12:28:54892검색

数据库是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);			//返回false			show_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解决。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.