sanchezzzhak / kak-clickhouse

Yii2 ext. ClickHouse
69 stars 43 forks source link

Баг в SqlDataProvider . Getting unknown property: yii\db\Query::sample #34

Closed Alexz29 closed 5 years ago

Alexz29 commented 5 years ago

В файл kak/clickhouse/data/SqlDataProvider.php

use kak\clickhouse\Query;
protected function prepareTotalCount()
    {
        return (new Query([
            'from' => ['sub' => "({$this->sql})"],
            'params' => $this->params,
        ]))->count('*', $this->db);
    }

Так как в версии yii 2.0.16 вот такая ошибка

Unknown Property – yii\base\UnknownPropertyException Getting unknown property: yii\db\Query::sample

sanchezzzhak commented 5 years ago

Обновите пакет, ошибка исправлена в старых версиях в методе prepareTotalCount была проверка если значение уже известно то не делать запрос.

Alexz29 commented 5 years ago

Привет спасибо что оперативно ответил! Но в таком случае не будет пагинация работать.

Нужно именно вот этот код поставить

use kak\clickhouse\Query; protected function prepareTotalCount() { return (new Query([ 'from' => ['sub' => "({$this->sql})"], 'params' => $this->params, ]))->count('*', $this->db); }

а так же не забыть прописать use kak\clickhouse\Query;

sanchezzzhak commented 5 years ago

Код, который там используется нам не нужен. При запросе в prepareModels, где отправляется запрос - мы уже знаем сколько записей всего доступно без лимита.

$q = (new \kak\clickhouse\Query())->from('stat')
    ->where(['event_date' => '2017-05-01' , 'user_id' => 5 ])
    ->offset(0)
    ->limit(100);

$command = $q->createCommand();
$result  = $command->queryAll();

var_dump($command->getCountAll());    // rows count before limit at least   
agilov commented 5 years ago

У меня то же самое после обновления фреймворка