【问题标题】:Attempted to load class "Join" from namespace "DS\ApiBundle\Command\Expr"尝试从命名空间“DS\ApiBundle\Command\Expr”加载类“Join”
【发布时间】:2018-11-27 07:13:26
【问题描述】:

我正在尝试在 symfony 中加入两个表。它给了我以下错误:

Symfony\Component\Debug\Exception\ClassNotFoundException]
试图从命名空间加载类“Join” “DS\ApiBundle\Command\Expr”。您是否忘记了“使用”声明 例如“Doctrine\ORM\Query\AST\Join”还是“Doctrine\ORM\Query\Expr\Join”?

我的代码在下面:

 $student = $this->schoolManager->createQueryBuilder('s')                      
    ->leftJoin('s.schoolId', 'm', Expr\Join::ON ,'s.schoolId = m.school')        
    ->getQuery();

每个学校都有会员。

【问题讨论】:

    标签: symfony left-join


    【解决方案1】:

    欢迎来到论坛。

    您可以通过 a) 仅使用连接表达式的字符串表示来修复此错误:

    $student = $this->schoolManager->createQueryBuilder('s')                      
        ->leftJoin('s.schoolId', 'm', 'ON' ,'s.schoolId = m.school')        
        ->getQuery();
    

    of by b) 包括相关学说类的使用声明(在您的类的开头)

    use Doctrine\ORM\Query\Expr;
    
    ...
    
    $student = $this->schoolManager->createQueryBuilder('s')                      
        ->leftJoin('s.schoolId', 'm', Expr\Join::ON ,'s.schoolId = m.school')        
        ->getQuery();
    

    【讨论】:

    • 它给我的错误是-->错误:DS\AppBundle\Entity\School 类没有名为 schoolId 的关联
    • 那将是另一个问题 - 这通常会更好,因为它是自己的问题。但正如错误所说,您的查询正在尝试使用您的实体中的成员变量“schoolId” - 但没有'找不到它(=在你的实体中没有定义)。我可以猜测它应该只是您从 School 实体访问的“id”(而不是“schoolId”) - 但除非/直到您在问题中包含 School 实体代码,否则猜测/假设是唯一的事情我可以解决这个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2017-03-23
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多