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