DQL-запрос Doctrine выдает ошибку: ожидаемый литерал, полученный конец строки

В настоящее время я пытаюсь создать блог-сайт, следуя курсу, в котором используется Symfony 2.5.2. (PHP -v 7.0)

Чтобы получить сообщение, я использую следующий контроллер

/**
 * @Route(
 *     "/{slug}",
 *     name = "blog_post"
 * )
 * @Template()
 */
public function postAction($slug)
{

    $PostRepo = $this->getDoctrine()->getRepository('AniaBlogBundle:Post');

    $Post = $PostRepo->getPublishedPost($slug);

    if(null === $Post){
        throw $this->createNotFoundException('Post not found');
    }

    return array(
        'post'=> $Post
    );
}

и вот моя функция getPublishedPost:

 public function getPublishedPost($slug){
    $qb = $this->getQueryBuilder(array(
            'status' => 'published'
    ));

   $qb->andWhere('p.slug = :slug')
       ->setParameter('slug', $slug);

    return $qb->getQuery()->getOneOrNullResult();
}

и функция getQueryBuilder:

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

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

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

     if(!empty($params['orderBy'])){
         $orderDir = !empty($params['orderDir']) ? $params['orderDir'] : NULL;
         $qb->orderBy($params['orderBy'], $orderDir);
     }

    if(!empty($params['categorySlug'])){
        $qb->andWhere('c.slug = :categorySlug')
                ->setParameter('categorySlug', $params['categorySlug']);
    }

    if(!empty($params['tagSlug'])){
        $qb->andWhere('t.slug = :tagSlug')
            ->setParameter('tagSlug', $params['tagSlug']);
    }

    if(!empty($params['search'])) {
        $searchParam = '%'.$params['search'].'%';
        $qb->andWhere('p.title LIKE :searchParam OR p.content LIKE :searchParam')
            ->setParameter('searchParam', $searchParam);
    }

    return $qb;
}

}

Однако я получаю сообщение об ошибке 500: [Синтаксическая ошибка], строка 0, столбец -1: Ошибка: ожидаемый литерал, получен конец строки.

Заранее благодарю за любые предложения!

0 ответов

Другие вопросы по тегам