2012-05-10 1 views
-1

Я разрабатываю приложение, использующее Symfony2 и DQL для создания некоторых запросов в репозиториях. У меня есть следующий код в контроллере:запрос хранилища Symfony2 не работает

$emGalPak = $this->getDoctrine()->getEntityManager(); 
    $OsatugabeKop = $emGalPak->getRepository('AnotatzaileaAnotatzaileaBundle:GalderaPaketea') 
          ->getOsatugabeKop(); 

и это запрос я построил в хранилище, соответствующие сущности упомянутых выше:

<?php 

namespace Anotatzailea\AnotatzaileaBundle\Repository; 

use Doctrine\ORM\EntityRepository; 

/** 
* GalderaPaketeaRepository 
* 
* This class was generated by the Doctrine ORM. Add your own custom 
* repository methods below. 
*/ 
class GalderaPaketeaRepository extends EntityRepository 
{ 
    public function getOsatugabeKop() 
    { 
     $qb = $this->createQueryBuilder('c') 
        ->select('c') 
        ->where('c.Osatua = 0') 
     $Emaitza = $qb->getQuery()->getResult(); 

       return sizeof($Emaitza); 

    } 

} 

При выполнении кода он показывает следующую ошибку:

Parse error: syntax error, unexpected T_VARIABLE in /var/www/Symfony/src/Anotatzailea/AnotatzaileaBundle/Repository/GalderaPaketeaRepository.php on line 20 

Любая идея о том, как я могу решить эту ошибку?

+0

Атрибут Osatua, упомянутый выше, является логическим – Haritz

ответ

2

Это не имеет никакого отношения к тому, что ваш запрос не работает.

Когда вы видите «ошибку Parse», это означает, что ваш код PHP неправильно отформатирован, а механизм PHP не может даже разобрать его, не говоря уже о его запуске.

В этом конкретном случае вам не хватает точки с запятой в конце выражения, создающего построитель запросов.

public function getOsatugabeKop() 
{ 
    $qb = $this->createQueryBuilder('c') 
       ->select('c') 
       ->where('c.Osatua = 0'); // <--- right there 
    $Emaitza = $qb->getQuery()->getResult(); 

    return sizeof($Emaitza); 
} 

Когда вы получаете сообщение об ошибке unexpected T_VARIABLE, что почти всегда, потому что вы опустили точку с запятой и анализатор обнаружил переменный, прежде чем он подумал, что это должно быть. Легче увидеть ошибку, если вы выберете пробел.

// Bad Code, two lines 
$now = time() 
$one = 1; 

// Bad Code, one line 
$now = time()$one = 1; 
// ----------^ Pretty obvious now that a semicolon is missing 
// And that a variable was encountered unexpectedly 

Приветствия

+0

Избивать меня на 26 секунд :) –

+0

Я всегда удивляюсь тому, как люди этого не видят. Сообщения об ошибках php настолько кратки и понятны, что проблема. – Flukey

0

Запятой отсутствует после where линии.