joomla 2.5中的一个模型中的多个查询

时间:2013-07-16 12:13:10

标签: php joomla joomla2.5

我可以在joomla 2.5中的模型中执行2个单独的查询吗? 如果有可能,你怎么做?

这是我的模特:

<?php
            defined('_JEXEC') or die();

            jimport( 'joomla.application.component.modellist' );

            class AnagraficheModelServiziassociatiaggiuntivi extends JModelList
            {
                           public function __construct($config = array())
                           {
                                           if (empty($config['filter_fields'])) 
                                           {
                                                           $config['filter_fields'] = array('id_servizi_aggiuntivi', 'id_persona', 'id_servizio', 'nome_servizio', 'cod_servizio', 'id_tipologia_socio', 'nome_servizio');
                                           }

                                           parent::__construct($config);
                           }

                           function getListQuery()
                           {              
                                           $db = JFactory::getDBO();
                                           $query = $db->getQuery(true);
                                           $query->select('id_servizi_aggiuntivi, id_persona , id_servizio , nome_servizio');
                                           $query->from('#__servizi_aggiuntivi as serviziaggiuntivi, #__elenco_servizi');
                                           $query->where('cod_servizio=id_servizio');
                                           $result1 = $db->loadObjectList();


                                           //$db->setQuery($query);

                                           $query = $db->getQuery(true);
                                           $query->select('id_tipologia_socio, id_servizio as cod_servizio, nome_servizio');
                                           $query->from('#__associazione_servizi as serviziassociati, #__elenco_servizi');
                                           $query->where('cod_servizio=id_servizio');
                                           $result1 = $db->loadObjectList();


                                           return $query;
                           }

                           protected function populateState($ordering = null, $direction = null)
                           {
                                           // Load the filter state.
                                           $search = $this->getUserStateFromRequest($this->context.'.filter.search', 'filter_search');
                                           $this->setState('filter.search', $search);

                                           // List state information.
                                           parent::populateState($ordering, $direction);
                           }
            }
?>

这不起作用,但是如果我删除第二个查询就行得很好! 在我看来,问题出在函数getListQuery()中。在这个函数中我想插入2个查询而不是1个查询!有可能吗?

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。 getListQuery应该返回一个查询。你不能让它返回两个查询。

相反,您可能希望在第一个查询运行后覆盖getItems函数来处理项目。您可以使用以下内容调整或添加项目:

public function getItems() {
    // load items from the parent getItems function, which will call getListQuery to handle your first query.
    //It only adds items if the first query works.
    if ($items = parent::getItems()) {
        $db = JFactory::getDbo();

        $query = $db->getQuery(true);
        $query->select('id_tipologia_socio, id_servizio as cod_servizio, nome_servizio');
        $query->from('#__associazione_servizi as serviziassociati, #__elenco_servizi');
        $query->where('cod_servizio=id_servizio');
        $result1 = $db->setQuery($query)->loadObjectList();

        // this is a simple way to merge the objects. You could do other processing (loops, etc) to meld the information together
        $items = (object) array_merge((array) $items, (array) $restult1);
    }
    return $items;
}