Forwarded to ErrorController (3f249e)

Exceptions

Offset must be a positive integer or zero, -20 given.

Exception

Doctrine\DBAL\Exception\ InvalidArgumentException

  1. * Adds an driver-specific LIMIT clause to the query.
  2. */
  3. final public function modifyLimitQuery(string $query, ?int $limit, int $offset = 0): string
  4. {
  5. if ($offset < 0) {
  6. throw new InvalidArgumentException(sprintf(
  7. 'Offset must be a positive integer or zero, %d given.',
  8. $offset,
  9. ));
  10. }
  1. * @throws RuntimeException
  2. */
  3. public function walkSelectStatementWithoutRowNumber(SelectStatement $AST, bool $addMissingItemsFromOrderByToSelect = true): string
  4. {
  5. // Apply the limit and offset.
  6. return $this->platform->modifyLimitQuery(
  7. $this->createSqlWithoutRowNumber($AST, $addMissingItemsFromOrderByToSelect),
  8. $this->maxResults,
  9. $this->firstResult,
  10. );
  11. }
in vendor/doctrine/orm/src/Tools/Pagination/LimitSubqueryOutputWalker.php -> walkSelectStatementWithoutRowNumber (line 311)
  1. // This will populate $orderByPathExpressions via
  2. // LimitSubqueryOutputWalker::walkPathExpression, which will be called
  3. // as the select statement is walked. We'll end up with an array of all
  4. // path expressions referenced in the query.
  5. $walker->walkSelectStatementWithoutRowNumber($AST, false);
  6. $orderByPathExpressions = $walker->getOrderByPathExpressions();
  7. // Get a map of referenced identifiers to field names.
  8. $selects = [];
  9. foreach ($orderByPathExpressions as $pathExpression) {
in vendor/doctrine/orm/src/Tools/Pagination/LimitSubqueryOutputWalker.php -> addMissingItemsFromOrderByToSelect (line 259)
  1. // We don't want to call this recursively!
  2. if ($AST->orderByClause instanceof OrderByClause && $addMissingItemsFromOrderByToSelect) {
  3. // In the case of ordering a query by columns from joined tables, we
  4. // must add those columns to the select clause of the query BEFORE
  5. // the SQL is generated.
  6. $this->addMissingItemsFromOrderByToSelect($AST);
  7. }
  8. // Remove order by clause from the inner query
  9. // It will be re-appended in the outer select generated by this method
  10. $orderByClause = $AST->orderByClause;
  1. }
  2. if ($this->platformSupportsRowNumber()) {
  3. $sql = $this->createSqlWithRowNumber($AST);
  4. } else {
  5. $sql = $this->createSqlWithoutRowNumber($AST);
  6. }
  7. return new SingleSelectSqlFinalizer($sql);
  8. }
in vendor/doctrine/orm/src/Query/Parser.php -> getFinalizer (line 363)
  1. $outputWalkerClass = $this->customOutputWalker ?: SqlOutputWalker::class;
  2. $outputWalker = new $outputWalkerClass($this->query, $this->parserResult, $this->queryComponents);
  3. if ($outputWalker instanceof OutputWalker) {
  4. $finalizer = $outputWalker->getFinalizer($AST);
  5. $this->parserResult->setSqlFinalizer($finalizer);
  6. } else {
  7. Deprecation::trigger(
  8. 'doctrine/orm',
  9. 'https://github.com/doctrine/orm/pull/11188/',
  1. }
  2. // Cache miss.
  3. $parser = new Parser($this);
  4. $this->parserResult = $parser->parse();
  5. $queryCache->save($cacheItem->set($this->parserResult)->expiresAfter($this->queryCacheTTL));
  6. return $this->parserResult;
  7. }
  1. $this->state = self::STATE_DIRTY;
  2. }
  3. private function getSqlExecutor(): AbstractSqlExecutor
  4. {
  5. return $this->parse()->prepareSqlExecutor($this);
  6. }
  7. }
in vendor/doctrine/orm/src/Query.php -> getSqlExecutor (line 257)
  1. return $this->parserResult;
  2. }
  3. protected function _doExecute(): Result|int
  4. {
  5. $executor = $this->getSqlExecutor();
  6. if ($this->queryCacheProfile) {
  7. $executor->setQueryCacheProfile($this->queryCacheProfile);
  8. } else {
  9. $executor->removeQueryCacheProfile();
  1. $setCacheEntry = static function ($data) use ($cache, $result, $cacheItem, $realCacheKey): void {
  2. $cache->save($cacheItem->set($result + [$realCacheKey => $data]));
  3. };
  4. }
  5. $stmt = $this->_doExecute();
  6. if (is_numeric($stmt)) {
  7. $setCacheEntry($stmt);
  8. return $stmt;
in vendor/doctrine/orm/src/AbstractQuery.php -> executeIgnoreQueryCache (line 891)
  1. ): mixed {
  2. if ($this->cacheable && $this->isCacheEnabled()) {
  3. return $this->executeUsingQueryCache($parameters, $hydrationMode);
  4. }
  5. return $this->executeIgnoreQueryCache($parameters, $hydrationMode);
  6. }
  7. /**
  8. * Execute query ignoring second level cache.
  9. *
  1. *
  2. * @return mixed[]
  3. */
  4. public function getScalarResult(): array
  5. {
  6. return $this->execute(null, self::HYDRATE_SCALAR);
  7. }
  8. /**
  9. * Get exactly one result or null.
  10. *
  1. $this->unbindUnusedQueryParams($subQuery);
  2. }
  3. $subQuery->setFirstResult($offset)->setMaxResults($length);
  4. $foundIdRows = $subQuery->getScalarResult();
  5. // don't do this for an empty id array
  6. if ($foundIdRows === []) {
  7. return new ArrayIterator([]);
  8. }
Paginator->getIterator() in src/Mapper/news/PostsPageMapper.php (line 21)
  1. private ObjectMapperInterface $objectMapper
  2. ) {}
  3. public function mapPaginatorToPostsPage(Paginator $paginator, InputBag $queryParameters): ItemsPage
  4. {
  5. $postDTOs = array_map(fn($postETT) => $this->objectMapper->map($postETT, postDTO::class), iterator_to_array($paginator->getIterator()));
  6. $pagesCount = ceil($paginator->count() / self::POSTS_PER_PAGE);
  7. $currentPage = $queryParameters->get('page') ?? 1;
  8. $queryParameters = $this->createQueryParametersArrayWithoutPage($queryParameters);
PostsPageMapper->mapPaginatorToPostsPage(object(Paginator), object(InputBag)) in src/Controller/news/NewsController.php (line 52)
  1. $filter = new Filter($language, $newerDate, $tag);
  2. $paginator = $this->queryBus->query(new GetPosts($page -1, $filter));
  3. $postsPage = $this->pageMapper->mapPaginatorToPostsPage($paginator, $request->query);
  4. return $this->render('skeletons/news/index.html.twig', ['posts_page' => $postsPage]);
  5. }
  6. #[Route(path: '/preview', name: 'app_news_preview', methods: [Request::METHOD_GET])]
  1. $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
  2. $controller = $event->getController();
  3. $arguments = $event->getArguments();
  4. // call controller
  5. $response = $controller(...$arguments);
  6. // view
  7. if (!$response instanceof Response) {
  8. $event = new ViewEvent($this, $request, $type, $response, $event);
  9. $this->dispatcher->dispatch($event, KernelEvents::VIEW);
  1. $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  2. $this->requestStack->push($request);
  3. $response = null;
  4. try {
  5. return $response = $this->handleRaw($request, $type);
  6. } catch (\Throwable $e) {
  7. if ($e instanceof \Error && !$this->handleAllThrowables) {
  8. throw $e;
  9. }
  1. $this->boot();
  2. ++$this->requestStackSize;
  3. $this->resetServices = true;
  4. try {
  5. return $this->getHttpKernel()->handle($request, $type, $catch);
  6. } finally {
  7. --$this->requestStackSize;
  8. }
  9. }
  1. ) {
  2. }
  3. public function run(): int
  4. {
  5. $response = $this->kernel->handle($this->request);
  6. if (Kernel::VERSION_ID >= 60400) {
  7. $response->send(false);
  8. if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in vendor/autoload_runtime.php -> run (line 29)
  1. $app = $app(...$args);
  2. exit(
  3. $runtime
  4. ->getRunner($app)
  5. ->run()
  6. );
require_once('/app/vendor/autoload_runtime.php') in public/index.php (line 5)
  1. <?php
  2. use App\Kernel;
  3. require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
  4. return function (array $context) {
  5. return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
  6. };

Logs

Level Channel Message
INFO 21:25:02 request Matched route "_profiler".
{
    "route": "_profiler",
    "route_parameters": {
        "_route": "_profiler",
        "_controller": "web_profiler.controller.profiler::panelAction",
        "token": "823a70"
    },
    "request_uri": "http://street-fighter-6.anagraph.org/_profiler/823a70?panel=exception&type=request",
    "method": "GET"
}
DEBUG 21:25:02 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
DEBUG 21:25:02 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Nelmio\CorsBundle\EventListener\CorsListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Nelmio\\CorsBundle\\EventListener\\CorsListener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Bridge\Doctrine\Middleware\IdleConnection\Listener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bridge\\Doctrine\\Middleware\\IdleConnection\\Listener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "App\Listener\LocaleSubscriber::checkLocale".
{
    "event": "kernel.request",
    "listener": "App\\Listener\\LocaleSubscriber::checkLocale"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.request" to listener "Symfony\UX\LiveComponent\EventListener\LiveComponentSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\UX\\LiveComponent\\EventListener\\LiveComponentSubscriber::onKernelRequest"
}
DEBUG 21:25:03 event Notified event "kernel.controller" to listener "Symfony\UX\LiveComponent\EventListener\LiveComponentSubscriber::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\UX\\LiveComponent\\EventListener\\LiveComponentSubscriber::onKernelController"
}
DEBUG 21:25:03 event Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
DEBUG 21:25:03 event Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
DEBUG 21:25:03 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsCsrfTokenValidAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsCsrfTokenValidAttributeListener::onKernelControllerArguments"
}
DEBUG 21:25:03 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
DEBUG 21:25:03 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
DEBUG 21:25:03 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestPayloadValueResolver::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestPayloadValueResolver::onKernelControllerArguments"
}
DEBUG 21:25:03 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::onControllerArguments"
}

Stack Trace

InvalidArgumentException
Doctrine\DBAL\Exception\InvalidArgumentException:
Offset must be a positive integer or zero, -20 given.

  at vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php:2086
  at Doctrine\DBAL\Platforms\AbstractPlatform->modifyLimitQuery('SELECT DISTINCT id_0 FROM (SELECT DISTINCT id_0, published_at_3 FROM (SELECT p0_.id AS id_0, p0_.link AS link_1, p0_.title AS title_2, p0_.published_at AS published_at_3, p0_.heading AS heading_4, p0_.language AS language_5, p0_.banner_link AS banner_link_6, p0_.tags AS tags_7 FROM post p0_) dctrn_result_inner ORDER BY published_at_3 DESC) dctrn_result', 20, -20)
     (vendor/doctrine/orm/src/Tools/Pagination/LimitSubqueryOutputWalker.php:245)
  at Doctrine\ORM\Tools\Pagination\LimitSubqueryOutputWalker->walkSelectStatementWithoutRowNumber(object(SelectStatement), false)
     (vendor/doctrine/orm/src/Tools/Pagination/LimitSubqueryOutputWalker.php:311)
  at Doctrine\ORM\Tools\Pagination\LimitSubqueryOutputWalker->addMissingItemsFromOrderByToSelect(object(SelectStatement))
     (vendor/doctrine/orm/src/Tools/Pagination/LimitSubqueryOutputWalker.php:259)
  at Doctrine\ORM\Tools\Pagination\LimitSubqueryOutputWalker->createSqlWithoutRowNumber(object(SelectStatement))
     (vendor/doctrine/orm/src/Tools/Pagination/LimitSubqueryOutputWalker.php:173)
  at Doctrine\ORM\Tools\Pagination\LimitSubqueryOutputWalker->getFinalizer(object(SelectStatement))
     (vendor/doctrine/orm/src/Query/Parser.php:363)
  at Doctrine\ORM\Query\Parser->parse()
     (vendor/doctrine/orm/src/Query.php:248)
  at Doctrine\ORM\Query->parse()
     (vendor/doctrine/orm/src/Query.php:717)
  at Doctrine\ORM\Query->getSqlExecutor()
     (vendor/doctrine/orm/src/Query.php:257)
  at Doctrine\ORM\Query->_doExecute()
     (vendor/doctrine/orm/src/AbstractQuery.php:935)
  at Doctrine\ORM\AbstractQuery->executeIgnoreQueryCache(null, 3)
     (vendor/doctrine/orm/src/AbstractQuery.php:891)
  at Doctrine\ORM\AbstractQuery->execute(null, 3)
     (vendor/doctrine/orm/src/AbstractQuery.php:725)
  at Doctrine\ORM\AbstractQuery->getScalarResult()
     (vendor/doctrine/orm/src/Tools/Pagination/Paginator.php:127)
  at Doctrine\ORM\Tools\Pagination\Paginator->getIterator()
     (src/Mapper/news/PostsPageMapper.php:21)
  at App\Mapper\news\PostsPageMapper->mapPaginatorToPostsPage(object(Paginator), object(InputBag))
     (src/Controller/news/NewsController.php:52)
  at App\Controller\news\NewsController->index(object(Request), 0, null, null, null)
     (vendor/symfony/http-kernel/HttpKernel.php:183)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:76)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:182)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:29)
  at require_once('/app/vendor/autoload_runtime.php')
     (public/index.php:5)