-1

我正在使用 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

关于如何解决此错误的任何想法?

4

2 回答 2

2

这与您的查询不起作用无关。

当您看到“解析错误”时,这意味着您的 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

干杯

于 2012-05-10T18:10:41.627 回答
0

行后缺少分号where

于 2012-05-10T18:11:07.523 回答