未找到任何记录..Agiletolkit和Oracle.网格/CRUD元素


No records found ...Agiletoolkit and Oracle. Grid/CRUD elements

我正在尝试用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 '';
        }
    }
    

并将其放置在:...atk4'lib'DB'dsql

  • 为了修复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();
    }
}