• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony błąd "Too few parameters"

Mały hosting, OGROMNE możliwości
0 głosów
782 wizyt
pytanie zadane 11 marca 2016 w PHP przez Else Stary wyjadacz (12,260 p.)

Witam, od około miesiąca pracuje z symfony i podczas tworzenia pierwszej większej aplikacji wyświetla mi się błąd:

Too few parameters: the query defines 1 parameters but you only bound 0
500 Internal Server Error - QueryException

Mój kod wygląda następująco:

<?php

namespace PageBundle\Repository;

use Doctrine\ORM\EntityRepository;

class VideoRepository extends EntityRepository
{

    public function getQueryBuilder(array $params = array()){

        $qb= $this->createQueryBuilder('v')
            ->select('v, c, t')
            ->leftJoin('v.category', 'c')
            ->leftJoin('v.tags', 't');

        if(!empty($params['status'])){
            if('published' == $params['status']){
                $qb -> where('v.publishedDate <= :currDate AND v.publishedDate IS NOT NULL')
                    ->setParameter('currentDate', new \DateTime());

            }else if ('unpublished' == $params['status']){
                $qb -> where('v.publishedDate > :currDate OR v.publishedDate IS NULL')
                    ->setParameter('currentDate', new \DateTime());
            }
        }
        if (!empty($params['orderBy'])){
            $orderDir = !empty($params['orderDir']) ? $params['orderDir'] : NULL;
            $qb->orderBy($params['orderBy'], $orderDir);
        }
        return $qb;
    }
}

Oraz kontroler:

    public function indexAction($page)
    {
        $PostRepo = $this->getDoctrine()->getRepository('PageBundle:Video');
        $qb = $PostRepo -> getQueryBuilder(array(
            'status' => 'published',
            'orderBy' => 'v.publishedDate',
            'orderDir' => 'DESC'
        ));
        $paginator = $this -> get('knp_paginator');
        $pagination = $paginator->paginate($qb, $page, $this->itemsLimit);

        return array('pagination' => $pagination);
    }

Jestem dopiero początkujący jeśli chodzi o doświadzenie z symfony i nie wiem gdzie zrobiłem błąd. Przeglądałem stacka, ale mało z tego rozumiem.

Dzięki za pomoc, Else.

1 odpowiedź

+2 głosów
odpowiedź 11 marca 2016 przez SyntaxError Pasjonat (17,170 p.)
wybrane 12 marca 2016 przez Else
 
Najlepsza
W where nazwałeś sobie parametr :currDate, a potem zrobiłeś setParameter o nazwie currentDate. Zdecyduj się na jeden z nich i zmień na to samo.

BTW. Ten setParameter mógłby być jeden skoro jest ten sam dla dwóch ifów.
komentarz 12 marca 2016 przez Else Stary wyjadacz (12,260 p.)
dzięki pomogło. Poprostu miałem złe nazwy zmiennych

Podobne pytania

0 głosów
0 odpowiedzi 694 wizyt
pytanie zadane 15 listopada 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
0 odpowiedzi 718 wizyt
0 głosów
0 odpowiedzi 218 wizyt

93,715 zapytań

142,629 odpowiedzi

323,260 komentarzy

63,257 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...