Doctrine orm 条令使用外部实体中的字段查询语言顺序

Doctrine orm 条令使用外部实体中的字段查询语言顺序,doctrine-orm,dql,Doctrine Orm,Dql,我有3个实体: 使用者 会议 会话进程 以及一些协会: 双向多用户对多会话进程(会话进程有一个$users数组,存储会话中涉及的用户-导师和学生。用户实体还通过数组$sessions引用正在进行的会话) 双向一个会话到多个会话进程(给定会话可能有多个正在进行的会话,而正在进行的会话使用$Session引用其相应的会话) 我想使用DQL获取给定用户正在进行的会话,按Session中名为$num的字段排序,因此我想我需要一个DQL,如: SELECT s FROM SessionInProgress

我有3个实体:

  • 使用者
  • 会议
  • 会话进程
  • 以及一些协会:

  • 双向多
    用户
    对多
    会话进程
    会话进程
    有一个
    $users
    数组,存储会话中涉及的用户-导师和学生。
    用户
    实体还通过数组
    $sessions
    引用正在进行的会话)
  • 双向一个
    会话
    到多个
    会话进程
    (给定会话可能有多个正在进行的会话,而正在进行的会话使用
    $Session
    引用其相应的
    会话
  • 我想使用DQL获取给定用户正在进行的会话,按
    Session
    中名为
    $num
    的字段排序,因此我想我需要一个DQL,如:

    SELECT s FROM SessionInProgress sip JOIN sip.session s WHERE :givenUser MEMBER OF sip.users ORDER BY s.num ASC 
    
    于是我写道:

    public function findAllOrderedByNum($user)
    {
        $qb = $this->getEntityManager()->createQueryBuilder();
        return $qb
                ->select('s')
                ->from('SessionInProgress', 'sip')
                ->join('sip.session', 's')
                ->where($qb->expr()->in('?1', 'sip.users'))
                ->orderBy('s.num', 'ASC')
                ->setParameter(1, $user)
                ->getQuery()
        ->getResult();
    }
    

    这是正确的吗?我不太熟悉DQL或
    QueryBuilder
    语法

    ,问题是什么?你得到了错误的数据吗?你有错误吗?没有,我是问这是否有效。我还没有完成所有的控制器逻辑,所以我现在无法在任何地方执行这个DQL。我觉得很好,有错误吗?