2014-09-19 33 views
2

請幫助我的模型能夠從數據庫中獲取數據,但我不能夠過濾,如果我想要一個特定的結果集,它不斷給我同樣的數據的Joomla組件搜索

這是我的代碼。感謝您的幫助提前

public function __construct($config = array()) { 
       $config['filter_fields']=array(
       'b.start', 
       'd.`title` ', 
       'e.`title`'); 
       parent::__construct($config); 
     } 

    function getListQuery() 
    { 
    $db = JFactory::getDBO(); 
     $query = $db->getQuery(true); 
    $query->select('a.firstname, a.lastname, b.start, c.flightnumber, d.`title` TO_NAME, e.`title` FROM_NAME, c.id'); 
    $query->from(' #__bookpro_passenger as a'); 
    $query->JOIN('INNER', '#__bookpro_orderinfo as b ON a.order_id = b.order_id'); 
    $query-> JOIN('INNER','#__bookpro_flight as c ON b.obj_id = c.id'); 
    $query-> JOIN('INNER','#__bookpro_dest as d ON c.desfrom = d.id'); 
    $query-> JOIN('INNER',' #__bookpro_dest as e ON c.desto = e.id'); 



     $destfrom = $this->getState('filter.from'); 
       if (!empty($destfrom)) { 
       $destfrom = $db->Quote('%'.$db->escape($destfrom, true).'%'); 
       $query->where('(e.`title` LIKE '.$destfrom.')'); 
    } 


     $destfrom = $this->getState('filter.to'); 
       if (!empty($destfrom)) { 
       $destto = $db->Quote('%'.$db->escape($destto, true).'%'); 
       $query->where('(d.`title` LIKE '.$destto.')'); 
    } 
    return $query; 
    } 

    function populateState() 
     { 

       $app = JFactory::getApplication(); 


       $destfrom = $app->getUserStateFromRequest($this->context.'.filter.from', 'filter_from'); 

       $this->setState('filter.from', $destfrom); 
       $destto = $app->getUserStateFromRequest($this->context.'.filter.to', 'filter_to'); 

       $this->setState('filter.to', $destto); 


       parent::populateState(); 
    } 
} 
+0

沒有表格和表格細節,很難說出什麼問題。此外,第二個'if'條件也看起來不正確。它應該是'$ destto = $ this-> getState('filter.to'); if(!empty($ destto)){' – Irfan 2014-09-20 12:21:56

回答

0

你也應該在你的型號爲filter.tofilter.from覆蓋populateState():

protected function populateState($ordering = null, $direction = null) { 
    $app = JFactory::getApplication('administrator'); 
    $filter.to = $app->input->get('filter.to'); 
    $this->setState('filter.to', $rfilter.to); 
    // ... 
    // your default sorting 
    parent::populateState('a.firstname', 'asc'); 
} 

無論哪種方式,檢查$this->getState('filter.from')是正確設置。

-1

非常感謝它覆蓋了populateState()

+0

這不是一個答案,你可以在用戶的回答下添加評論。 – emmanuel 2014-10-08 17:11:29