学说 PHP 已经定义

Doctrine PHP is already defined

我对原则内连接有疑问。

$request = $em->getRepository('FYPFYPDesignBundle:SessionDesign');
$qb = $request->createQueryBuilder('SessionDesign');
$query = $qb
    ->select('SessionDesign.sessionID',        'SessionDesign.created','fos_user.username', 'fos_user.email', 'fos_user.fcid')
        ->from('FYPUserBundle:User', 'fos_user')
        ->innerJoin('fos_user.fcid', 'fos_user', 'ON', 'SessionDesign.sessionID = fos_user.fcid')       
        ->where('fos_user.emailok = true')
        ->getQuery();
    $result = $query->getResult();

它给我的错误是:

[Doctrine\ORM\Query\QueryException]                                                                                   
  [Semantical Error] line 0, col 218 near 'fos_user ON SessionDesign.sessionID': Error: 'fos_user' is already defined.

您不能在查询生成器中使用两次别名。

变化:

 ->from('FYPUserBundle:User', 'fos_user')
            ->innerJoin('fos_user.fcid', 'fos_user', 'ON', 'SessionDesign.sessionID = fos_user.fcid')

收件人:

 ->from('FYPUserBundle:User', 'fos_user')
            ->innerJoin('fos_user.fcid', 'fcid', 'ON', 'SessionDesign.sessionID = fos_user.fcid')

假设 fcid 是您要加入的实体。

注意我不确定为什么你正在做你正在做的事情,但这就是导致错误的原因。

编辑以获取更多信息。

如果在没有学说实体关系的情况下加入 sessiondesign(看起来这就是您正在做的事情):

->join('YourBundle:SessionDesign', 's', 'WITH', 's.sessionID = fos_user.fcid')