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. } }