Diskuze: Problém s odsazením | Doctrine 2
Tvůrce
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ahoj, nevím přesně proč, ale Kdyby\Doctrine metody setFirstResult() a setMaxResults() nepodporuje. Je potřeba využít metodu applyPaging().
$query = new StatusQuery();
$query->pubTables(); // tam můžeš ty dvě metody vyhodit a nechat jen podmínku andWhere()
$result = $this->em->getRepository(Status::class)->fetch($query);
$result->applyPaging(($page - 1) * 20, 20) // offset, limit;
return $result;
Asi to stejně budu muset řešit přes čistý DQL dotaz, protože mi to zbytečně generuje 2 dotazy si myslím:
4.988
SELECT DISTINCT id_6
FROM (
SELECT s0_.title AS title_0, s0_.section AS section_1, s0_.closed AS closed_2, s0_.content AS
content_3, s0_.time AS time_4, s0_.images AS images_5, s0_.id AS id_6
FROM status s0_
WHERE s0_.section = 0) dctrn_result
ORDER BY time_4 DESC
LIMIT 20
OFFSET 0
.../latte/templates-Pub-default.latte--e6898423c1.php
2.919
SELECT s0_.title AS title_0, s0_.section AS section_1, s0_.closed AS closed_2, s0_.content AS
content_3, s0_.time AS time_4, s0_.images AS images_5, s0_.id AS id_6, s0_.user AS user_7
FROM status s0_
WHERE s0_.section = 0 AND s0_.id IN (12, 11, 10, 9, 8, 7, 6, 5)
ORDER BY s0_.time DESC
.../latte/templates-Pub-default.latte--e6898423c1.php
To nechápu. Podle mě by na to v pohodě stačilo něco jako:
SELECT *
FROM ...\Status s
WHERE s.status = 0
ORDER BY s.time DESC
LIMIT 20
OFFSET 0
Mám pravdu, nebo to tam není ?
Zdá se, že to tam navíc je, i když (opět) nevím, proč je to řešené
zrovna takto
Pokud potřebuješ složit dotaz dynamicky, pořád můžeš využít
QueryBuilder, na něm by metody setFirstResult() a setMaxResults() fungovat
měly.
Zobrazeno 5 zpráv z 5.