我正在使用Symfony2和DQL开发一个应用程序,用于在存储库中构建一些查询。我在控制器中有下一个代码:
$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 :(得分:2)
这与您的查询无法正常工作无关。
当你看到&#34;解析错误&#34;这意味着你的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
干杯
答案 1 :(得分:0)
在where
行之后缺少分号。