АС
Size: a a a
АС
М
AM
AM
AM
М
AM
М
PC
$reader = new MyDataReader(...);А подсчет так не работает:
$all = $reader->read();
$reader->withFilter(new Like('name', 'agent'));
$totalAgents = $reader->read();
$reader = new MyDataReader(...);Тот же OffsetPaginator не будет работать корректно, если передать ему в конструктор IterableDataReader с фильтром.
$total = count($reader);
$reader->withFilter(new Like('name', 'agent'));
$totalAgents = count($reader);
$readerMin = (new MyDataReader(...))В общем, если я не до конца понял, то ткните меня носом кто-нибудь)
->withSort((new Sort(['id']))
->withOrder(['id' => 'asc']))
->withLimit(1);
$readerMax = (new MyDataReader(...))
->withSort((new Sort(['id']))
->withOrder(['id' => 'desc']))
->withLimit(1);
PC
$reader = new MyDataReader(...);А подсчет так не работает:
$all = $reader->read();
$reader->withFilter(new Like('name', 'agent'));
$totalAgents = $reader->read();
$reader = new MyDataReader(...);Тот же OffsetPaginator не будет работать корректно, если передать ему в конструктор IterableDataReader с фильтром.
$total = count($reader);
$reader->withFilter(new Like('name', 'agent'));
$totalAgents = count($reader);
$readerMin = (new MyDataReader(...))В общем, если я не до конца понял, то ткните меня носом кто-нибудь)
->withSort((new Sort(['id']))
->withOrder(['id' => 'asc']))
->withLimit(1);
$readerMax = (new MyDataReader(...))
->withSort((new Sort(['id']))
->withOrder(['id' => 'desc']))
->withLimit(1);
AM
AM
PC
PC
AM
AM
PC
IterableDataReader
делаем так:protected function matchFilter(array $item, array $filter): bool
{
[$operation, $field] = $filter;
if ($operation === Digital::getOperator()) {
return ctype_digit($item[$field]);
}
return parent::matchFilter($item, $filter);
}
ApiReader
другой метод:protected function buildFilterParam(array $filter): string
{
[$operation, $field] = $filter;
if ($operation === Digital::getOperator()) {
return "{$field}_is_digital=1";
}
return parent::buildFilterParam($item, $filter);
}
SQLDataReader
будет свой метод:protected function buildCondition($filter, &$params): string
{
[$operation, $field] = $filter;
if ($operation === Digital::getOperator()) {
return $this->escapeField($field) . " ~ '\d+'";
}
return parent::buildCondition($item, $filter);
}
PC
DataProvider
и FooReader
и тогда уже смотреть, можно ли им добавлять свои фильтры.AM
AM