PHP Nette - Paginator - SQL JOIN - Call to a member function count() on array

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:


$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);


Jak se ti článek líbil?

Komentáře (0)

Přidat komentář