PHP Nette - Paginator - SQL JOIN - Call to a member function count() on array
Dobrý den,
mám v Nette projektu VisualPaginator a funguje v pořádku. Když chci ale použít SQL s JOIN přes více tabulek, tak toto SQL nedokáži přes paginator propasírovat:
Háže mně to tuhle chybu:
Error
Call to a member function count() on array
$paginator->itemCount = $rows->count('*');
Poradíte prosím někdo jak ten paginator zprovoznit na klasický SQL dotaz přes více tabulek (přes JOIN)? Díky
Dobrý den,
v Nette projektu s VisualPaginator bude třeba upravit SQL dotazy takto a bude to fungovat, mám to ověřené:
Show english version
mám v Nette projektu VisualPaginator a funguje v pořádku. Když chci ale použít SQL s JOIN přes více tabulek, tak toto SQL nedokáži přes paginator propasírovat:
$rows = $this->database->fetchAll('SELECT dochazka.*, clenove.*, treninky.*, druzstva.* FROM dochazka
JOIN clenove ON dochazka.doch_cl_id = clenove.cl_id
JOIN treninky ON dochazka.doch_tr_id = treninky.tr_id
JOIN druzstva ON dochazka.doch_dr_id = druzstva.dr_id
ORDER BY dochazka.doch_id DESC');
$visualPaginator = $this['visualPaginator'];
$paginator = $visualPaginator->getPaginator();
$paginator->itemsPerPage = 30;
$paginator->itemCount = $rows->count('*');
$rows->limit($paginator->itemsPerPage, $paginator->offset);
$this->template->rows = $rows;
Háže mně to tuhle chybu:
Error
Call to a member function count() on array
$paginator->itemCount = $rows->count('*');
Poradíte prosím někdo jak ten paginator zprovoznit na klasický SQL dotaz přes více tabulek (přes JOIN)? Díky
ODPOVĚĎ
Dobrý den,
v Nette projektu s VisualPaginator bude třeba upravit SQL dotazy takto a bude to fungovat, mám to ověřené:
$count = $this->database->query('SELECT dochazka.*, clenove.*, treninky.*, druzstva.* FROM dochazka
JOIN clenove ON dochazka.doch_cl_id = clenove.cl_id
JOIN treninky ON dochazka.doch_tr_id = treninky.tr_id
JOIN druzstva ON dochazka.doch_dr_id = druzstva.dr_id
ORDER BY dochazka.doch_id DESC');
$visualPaginator = $this['visualPaginator'];
$paginator = $visualPaginator->getPaginator();
$paginator->itemsPerPage = 30;
$paginator->itemCount = count($count->fetchAll());
$this->template->rows = $this->database->query('SELECT dochazka.*, clenove.*, treninky.*, druzstva.* FROM dochazka
JOIN clenove ON dochazka.doch_cl_id = clenove.cl_id
JOIN treninky ON dochazka.doch_tr_id = treninky.tr_id
JOIN druzstva ON dochazka.doch_dr_id = druzstva.dr_id
ORDER BY dochazka.doch_id DESC LIMIT ? OFFSET ?', $paginator->itemsPerPage, $paginator->offset);
Show english version