====== lmbQueryBasedFetcher ======
lmbQueryBasedFetcher - дочерний класс от [[lmbFetcher]], который используется для усуществления выборок из базы данных.
lmbQueryBasedFetcher принимает параметр query_name, который указывает на имя класса, который инкапсулирует SELECT SQL запрос. см. [[limb3_2007_2:ru:packages:dbal:lmbSelectQuery|lmbSelectQuery]]. query_name можно установить через метод setQueryName($query_name). lmbQueryBasedFetcher поддерживает добавление сортировки в выборку посредство метода setOrder($order_string) (см. [[limb3_2007_2:ru:packages:dbal:lmbOrderQueryModifier|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 можно изменять. Обычно это делается при помощи так называемых [[limb3_2007_2:ru:packages:dbal:QueryModifier|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.
}
}