Strankovanie nefunkčné s db->query()
- Andurit
- Člen | 131
Ahojte,
kedysi dávno som napísal nejaký jednoduchší web so strankovaním.
V zásade to vyzeralo nejako takto:
modeL:
function getAll()
{
return $this->db->table('posts'); //vykona sa len ak ho zacneme potrebovaĹĄ
}
presenter:
function renderList($page = 1)
{
if ($page < 1) {
$this->error();
}
$this->template->posts = $this->facade->getAll()
->order('created DESC')
->page($page, self::POSTS_PER_PAGE, $lastPage);
$this->template->page = $page;
$this->template->lastPage = $lastPage;
if ($page > $lastPage && $page > 1) {
$this->error();
}
}
view:
<p>
<a n:href="list $page - 1" class="btn btn-default" n:if="$page > 1">novější</a>
<a n:href="list $page + 1" class="btn btn-default" n:if="$page < $lastPage">starší</a>
</p>
Toto všetko krásne fungovalo. Dlhšie som v nette stránkovanie
nepotreboval (zda sa to asi nemozne ale je to tak)
A teraz ked som chcel použiť znova niečo podobné ale pri query, ktorá
vyzerá nejako takto:
function getAllRegistered()
{
return $this->db->query
("
SELECT c.id, c.firstname, c.surname, c.email, c.process, c.search_work, c.note,c.registration_date,
MAX(CASE WHEN cl.language = 'angličtina' THEN cl.level ELSE '-' END)AS 'en',
MAX(CASE WHEN cl.language = 'němčina' THEN cl.level ELSE '-' END)AS 'ge',
group_concat(DISTINCT ce.enforcement) as enfor,
group_concat(DISTINCT cc.city) as city
FROM candidates AS c
LEFT JOIN candidates_languages AS cl ON c.id = cl.candidates_id
LEFT JOIN candidates_enforcement as ce on c.id = ce.candidates_id
LEFT JOIN candidates_city as cc on c.id = cc.candidates_id
GROUP BY c.id, c.firstname, c.surname, c.email DESC
");
}
Bohužiaľ v tomto prípade dostávam:
Call to undefined method Nette\Database\ResultSet::order().
Povedal som si, že to možno robím zle preto som skúsil íst podľa
https://componette.org/search/?…
, bohužiaľ dostal som sa k rovnakej chybe.
Predpokladám, že je to preto, že na db->query nemôžem naviazať
->order a ->page.
Ako by som to mohol obísť?
Resp dal by mi niekto návod ako pre kretena ako urobiť stránkovanie s tým
čo mám.
Diky
Editoval Andurit (6. 12. 2015 15:13)
- Václav Kraus
- Člen | 77
Ahoj,
jednou jsem řešil podobnou věc. Na query() to opravdu navěsit nejde, tak
jsem si udělal stránkování bez nástrojů fw. Asi to není úplně čisté,
ale na nic jiného jsem nepřišel.