Strankovanie nefunkčné s db->query()

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Andurit
Člen | 131
+
0
-

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
+
0
-

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.

http://php.vrana.cz/strankovani.php