не могу разрешить схему по умолчанию в zend_db_select - PullRequest
0 голосов
/ 20 октября 2011

почему zend_db_select не берет схему из конфигурационного файла? и как я могу это исправить?

конфиг:

resources.database.adapter = "Oracle"
resources.database.params.dbname = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = x.x.x.x)(PORT = 1521)) (CONNECT_DATA = (SID = xx)))"
resources.database.params.username = ''
resources.database.params.password = ''
resources.database.params.trace =
resources.database.params.schema = YYY

выберите:

$select->from(
                array('pm' => 'tab_1'),
                array(
                    'pm_id',
                    'status',
                    'pm_status',
                    'pm_tabno',
                    'pm_cardno',
                    'pm_start_dt',
                    'pm_endtk_dt',
                    'pm_signature',
                    'pm_servrec_no',
                    'pm_isdirector'
                )
            )
            ->joinLeft(
                array('pa' => 'tab_2'),
                'pm.pm_id = pa.pa_pm',
                array(
                    'PRL_NAME',
                    'PRF_NAME',
                    'PRS_NAME'
                )
            )
            ->joinLeft(
                array('ddpst' => 'tab_3'),
                'pm.status = ddpst.dic_value',
                'dic_name'
            )
            ->joinLeft(
                array('pst' => 'tab_4'),
                'pm.pm_status = pst.dic_value',
                'dic_sname'
            )
            ->where(
                'pa.status = 1'
        );

результат:

SELECT z2.*
            FROM (
                SELECT z1.*, ROWNUM AS "zend_db_rownum"
                FROM (
                    SELECT pm.pm_id, pm.status, pm.pm_status, pm.pm_tabno, pm.pm_cardno, pm.pm_start_dt, pm.pm_endtk_dt, pm.pm_signature, pm.pm_servrec_no, pm.pm_isdirector, pa.PRL_NAME, pa.PRF_NAME, pa.PRS_NAME, ddpst.dic_name, pst.dic_sname FROM tab_1 pm
 LEFT JOIN tab_2 pa ON pm.pm_id = pa.pa_pm
 LEFT JOIN tab_3 ddpst ON pm.status = ddpst.dic_value
 LEFT JOIN tab_4 pst ON pm.pm_status = pst.dic_value WHERE (pa.status = 1) ORDER BY PRL_NAME ASC
                ) z1
            ) z2
            WHERE z2."zend_db_rownum" BETWEEN 1 AND 50

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Схема не является допустимым параметром, принятым Zend_Application_Resrouce_Db или Zend_Db_Adapter_Oracle. Вы можете установить схему из ваших классов DbTable, если вы используете Zend_Db_Table_Abstract для определения ваших DbTables.

См. Пример # 4 .

0 голосов
/ 21 октября 2011

решено путем переопределения Zend_Db_Select (_join () для добавления схемы по умолчанию) + переопределение Zend_Db_Adapter (для возврата собственного Select)

...