Zend Framework, как мне получить доступ к различным классам таблиц из моего Application_Model_Report? - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть модель отчета, которую я использую в качестве основного контейнера для всех функций, которые извлекают различные данные отчета.Эта модель отчета имеет следующие функции

    protected $_dbTable;

public function setDbTable($dbTable) 
{
    if (is_string($dbTable)) 
    {
        $dbTable = new $dbTable();
    }

    if (!$dbTable instanceof Zend_Db_Table_Abstract) 
    {
        throw new Exception('Invalid table data gateway provided');
    }
    $this->_dbTable = $dbTable;
    return $this;
}

public function getDbTable($dbTable)
{
    if (null === $this->_dbTable) 
    {
        $this->setDbTable($dbTable);
    }
    return $this->_dbTable;
}

public function agentDailyCollections()
{ 
    //$db =
    $sql = $this->getDbTable('Application_Model_DbTable_Groupsloandetails'`enter code here`)->select()
               ->setIntegrityCheck(false)
               ->from(array('gl' => 'groups_loan_details'), array())
               ->join(array('ml' => 'members_loan_details'), 'gl.id = ml.groups_loan_details_id', 
                       array('SUM(ml.daily_payment) AS GroupDailyPayment'))
               ->join(array('m' => 'members'), 'ml.members_id = m.id', array('id AS ID', 'first_name AS MFirstName', 'surname AS MSurname'))
               ->join(array('g' => 'groups'), 'gl.groups_id = g.id', array('group_name'))
               ->join(array('u' => 'users'), 'gl.loan_officer  = u.id', array('id AS OID', 'first_name', 'surname'))
               ->where('gl.loan_end >=?', date(Y.'-'.m.'-'.d))
               ->where('gl.occur = ?', 'Active')
               ->group('(u.id)')
               ->group('(g.group_name)')
               ->group('(m.id) WITH ROLLUP');

    return $this->getDbTable()->fetchAll($sql);
}

public function groupsWithMembers()
{ 
    $sql = $this->getDbTable('Application_Model_DbTable_Members')->select()
               ->setIntegrityCheck(false)
               ->from(array('m' => 'members'), array())
               ->join(array('g' => 'groups'), 'm.groups_id = g.id')
               ->group('(g.group_area_residence)')
               ->group('(g.group_name) WITH ROLLUP');

    return $this->getDbTable()->fetchAll($sql);
}

В моей попытке получить доступ к различным таблицам в соответствии с другим требованием к отчету я передаю имя нужного класса таблицы функции getDbTable, ожидая, что она получитОбъект стола для меня.Это вроде работает, но потом я получаю следующее сообщение об ошибке

Warning: Missing argument 1 for Application_Model_Report::getDbTable(), called in D:\www\gepm\application\models\Report.php on line 131 and defined in D:\www\gepm\application\models\Report.php on line 22`enter code here`

Я знаю, что с тем, что я делаю, что-то в корне неправильно, но не уверен, что именно.Нужна помощь, ребята, просто пытаясь обойти эту вещь в рамках объекта / Zend Framework.Спасибо.

1 Ответ

0 голосов
/ 18 ноября 2010

Я думаю, что вы пропустили значение по умолчанию для аргумента в вашей функции, попробуйте изменить:

public function getDbTable($dbTable)
{

с

public function getDbTable($dbTable = null)
{
...