lmbQueryBasedFetcher

lmbQueryBasedFetcher - дочерний класс от lmbFetcher, который используется для усуществления выборок из базы данных.

lmbQueryBasedFetcher принимает параметр query_name, который указывает на имя класса, который инкапсулирует SELECT SQL запрос. см. lmbSelectQuery. query_name можно установить через метод setQueryName($query_name). lmbQueryBasedFetcher поддерживает добавление сортировки в выборку посредство метода setOrder($order_string) (см. lmbOrderQueryModifier).

Ниже дан пример использования lmbQueryBasedFetcher:

class PastNewsQuery extends lmbSelectQuery
{
  function __construct()
  {
    $sql = 'SELECT * %fields% from news %tables % WHERE date < ' . time() . ' %where% %order%';
    parent :: __construct($sql);
  }
}
 
$fetcher = new lmbQueryBasedFetcher();
$fetcher->setQueryName('PastNewsQuery');
$fetcher->setOrder('title');
$record_set = $fetcher->getDataSet();

Query, который создается внутри lmbQueryBasedFetcher можно изменять. Обычно это делается при помощи так называемых lmbQueryModifier. Для этого есть закрытый метод _collectModifiers():

class SpecialFetcher extends lmbQueryBasedFetcher
{ 
  protected function _collectModifiers()
  {
    parent :: _collectModifiers();
 
    $this->addQueryModifier(new lmbCriteriaQueryModifier($this->_getCriteria()));
  }
 
  protected function _getCriteria()
  {
   // some code that returns a criteria.
  }
}