2014-06-06 2 views
2

Новое в Symfony & УчениеМетод «QueryBuilder» не найден в классе ObjectRepository

Я пытаюсь принести выбор объектов из базы данных MySQL через доктриной в проекте Symfony. Я делаю это с createQueryBuilder;

$repository = $this->getDoctrine() 
    ->getRepository('mcsyncBundle:DB'); 
$query = $repository->createQueryBuilder('p') 
    ->select('p') 
    ->where('(p.created=:)' . $till) 
    ->setParameter('created', $till) 
    ->orderBy('p.created', 'ASC') 
    ->getQuery(); 
$PackDB = $query->getResult(); 

Но я получаю сообщение об ошибке:

*Method 'QueryBuilder' not found in class \Doctrine\Common\Persistence\ObjectRepository*. 

Любой, кто может объяснить (FIX) эту проблему?

EDIT: Эта ошибка приходит изнутри PhpStorm, кстати, а не от самого Symfony

ответ

8

Я предполагаю, что Вы написали, что код в Controler файл. QueryBuilders должны быть в репозиториях файлов. Для /Entity/Plop.php у вас также должно быть /Entity/PlopRepository.php.

PlopRepository.php

namespace Foo\BarBundle\Entity; 
use Doctrine\ORM\EntityRepository; 

class PlopRepository extends EntityRepository 
{ 
    public function getCreatedP() 
    { 
     $qb = $this->createQueryBuilder('p') 
        ->select('p') 
        ->where('p.created = :created') 
        ->setParameter('created', $till) 
        ->orderBy('p.created', 'ASC'); 

     return $qb->getQuery() 
        ->getResults(); 
    } 
    // ... 
} 

EDIT 1: и там была ошибка в вашем ->where('...') заявлении я фиксированной;)

EDIT 2: быть завершена, контроллер часть:

TotoController.php

public function getPlopAction() 
{ 
    $entityManager = $this->getDoctrine()->getManager(); 
    $plopRepository = $entityManager->getRepository('FooBarBundle:Plop'); 
    $plops = $plopRepository->getCreatedP(); 
    // ... 
} 
+0

И TS сказал: "Да будет свет!" * (Спасибо за объяснение и заявление исправить!) * –

+1

Отлично! Будьте осторожны, в моем ответе был добавлен вызов 'getQuery()'. Я отредактировал мой пост;) – Rybus

+0

Я видел это, но хорошо сказать об этом в любом случае! Мне нравится этот код гораздо больше .. –

Смежные вопросы