JOIN v Nette\Database a stránkování výsledku
- Namespace
- Člen | 81
Dobrý den,
narazil jsem na problém ve skládání dotazu pomocí Nette\Database a nemam
potuchy, jak to řešit. Našla by se tu dobrá duše, která by mě alespoň
nasměrovala správným směrem?
Mám tento SQL dotaz:
SELECT name, identify_id, affiliation
FROM users
LEFT JOIN affiliations ON affiliations.users_id=users.identify_id
ORDER BY identify_id DESC;
Není problém to napsat pomocí:
$this->db->table('users')->query('...');
Problém nastane až v okamžiku, kdy chci použít stránkování:
$this->db->query(""
. "SELECT name, identify_id, affiliation "
. "FROM ".self::TABLE_NAME. " "
. "LEFT JOIN affiliations ON affiliations.users_id=users.identify_id "
. "ORDER BY identify_id DESC "
. "LIMIT $paginator->getLength(), $paginator->getOffset()");
$paginator z nějakého důvodu vrací nesmysly (například nevrací hodnotu $paginator->getOffset()).
Pokud to použiji takto:
$this->db->table(self::TABLE_NAME)->limit($paginator->getLength(), $paginator->getOffset());
Tak vše funguje korektně, jen bohužel bez JOIN
Odhaduji tedy, že problém $paginator způsobuje metoda query(), jen jsem nepřišel na způsob, jak se ji zbavit.
$paginator = new Nette\Utils\Paginator;
Nette 2.3.0
Za jakékoliv radu velice děkuji
- greeny
- Člen | 405
Skoro bych řekl, že v tom query("...")
bys ten kus
$paginator->getLength()
měl obalit uvozovkama a tečkama:
$this->db->query(""
. "SELECT name, identify_id, affiliation "
. "FROM ".self::TABLE_NAME. " "
. "LEFT JOIN affiliations ON affiliations.users_id=users.identify_id "
. "ORDER BY identify_id DESC "
. "LIMIT " . $paginator->getLength() . ", " . $paginator->getOffset());