我正在尝试用oracle测试敏捷工具包,在建立了一个模型并尝试显示一个网格后,它显示"找不到记录"。。。
让我告诉你我做了什么,因为我一直在猜测大部分配置,因为我没有找到oracle的指南。
-
agiletoolkit config-default.php文件中的Oracle连接字符串如下所示:
$config[ddsn']=数组('oci:dbname=localhost/MYDATABASE','MYUSER','MYPASSWORD');
-
为了修复未找到驱动程序的错误,我在apache安装的php.ini文件中启用了
extension=php_pdo_oci8.dll
。 -
然后出现了一个关于缺少"oci.php"的错误,为了解决这个问题,我必须创建自己的文件,如下所示:
class DB_dsql_oci extends DB_dsql { function limit($cnt,$shift=0){ $cnt+=$shift; $this->where('NUM_ROWS>=',$shift); $this->where('NUM_ROWS<',$cnt); return $this; } function render_limit(){ return ''; } }
并将其放置在:...atk4libDBdsql
- 为了修复oracle中的特殊字符错误,我将/atk4/lib/DB/dsql.php上的第59行设置为空字符串,如下所示:
public $bt='';
我设法运行了数据库测试,结果显示"成功连接到数据库"
然后我创建了一个模型"lib\model\Mytable.php",如下所示:
<?php
class Model_Mytable extends Model_Table {
public $table = "MYTABLE";
function init(){
parent::init();
$this->addField('ID');
$this->addField('NAME');
$this->addField('INIDATE');
$this->addField('ENDDATE');
}
?>
之后,我制作了一个新页面,并尝试使用这样的模型:
<?php
class page_test extends Page {
function init(){
parent::init();
$form = $this->add('Grid');
$form->setModel('Mytable');
}
}
?>
刷新浏览器后,它将显示网格,显示"未找到记录"
我想知道发生了什么,该表无疑有记录,所有数据都已提交,我确信oracle正在解析查询,因为如果我错过了列名,就会引发oracle错误。
有线索吗?
这就是您可以简单地将DSQL设置为视图(例如网格)数据源的方法:
class page_test extends Page_Basic
{
function init()
{
parent::init();
// DSQL
$q = $this->api->db->dsql();
$q->table('MYTABLE')
->field('DNAME')
->field('INIDATE');
// Create grid and set DSQL as its data source
$g = $this->add('Grid');
$g->addColumn('DNAME');
$g->addColumn('INIDATE');
$g->setSource($q);
// better add paginator too or your grid can become huge :)
$g->addPaginator();
}
}