【问题标题】:Semantical Error Class 'Blog' is not defined Symfony 4语义错误类“博客”未定义 Symfony 4
【发布时间】:2018-04-18 08:23:11
【问题描述】:

我有这个代码:

namespace App\Controller;
use Symfony\Component\HttpFoundation\Request;
use App\Entity\Blog;

use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\ORM\Tools\Pagination\Paginator;

class BlogController extends Controller
{
    /**
     * @Route("/blog", name="blog")
     */
    public function index()
    { 
        $entityManager=$this->getDoctrine()->getManager();

        $blog = $this->getDoctrine()->getRepository(Blog::class);
        $dql = "SELECT id, name  FROM Blog";
        $query = $entityManager->createQuery($dql)
                           ->setFirstResult(0)
                           ->setMaxResults(100);

        $paginator = new Paginator($query, $fetchJoinCollection = true);

        $c = count($paginator);
        foreach ($paginator as $post) {
            echo $post->getHeadline() . "\n";
        }

        return $this->render('blog/index.html.twig', [
            'controller_name' => 'BlogController',
            'blog' =>$blog,
        ]);
    }
}

但是当我运行它时它给了我

[语义错误] 第 0 行,第 22 列“博客”附近:错误:“博客”类是 没有定义的。 我也试过放

 $dql = "SELECT id, name  FROM App\Entity\Blog:Blog";

但是以这种方式它给了我

[语法错误] 第 0 行,第 37 列:错误:预期 Doctrine\ORM\Query\Lexer::T_IDENTIFIER,得到 ':Blog'

我不知道该怎么办。请帮帮我

【问题讨论】:

    标签: php symfony pagination


    【解决方案1】:

    正确的 DQL 查询应如下所示:

    SELECT blog.id, blog.name FROM App\Entity\Blog blog
    

    DQL documentation 应该可以帮助您。

    【讨论】:

      【解决方案2】:

      升级到 S4 并重构代码后,我遇到了同样的问题,但能够确定根本原因。

      我的代码看起来像这样

      public function loadUserByUsername($username)
      {
          $select = "SELECT u";
          $from = " FROM App\Vk\UsrBundle\Entity\vUser u";   // <- Note the fully qualified path to the class definition.
          $join = "";
          $where = " WHERE u.username = '$username'";
      
          $query_string = $select . $from . $join . $where;
          $query = $this->em->createQuery($query_string);
          dump($query); die();                                // <- Dump $query to check how it looks
          $v_user = $query->getResult()[0];       
      
          if (isset($v_user))
              return $v_user;
      
          throw new UsernameNotFoundException(
              sprintf('Username "%s" does not exist.', $username)
          );
      }
      

      我的查询看起来不正确,系统将“\v”作为一个值。 view dump output

      添加另一个反斜杠来屏蔽 '\v' 中的反斜杠解决了这个问题。之后查询工作,错误消失了。

      $from = " FROM App\Vk\UsrBundle\Entity\\vUser u";
      

      不确定这是否与您的根本原因相同,但这可能有助于调查。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多