modelsManager->createBuilder() ->columns(['c.id', 'c.title', 'c.course_id', 'cl.start_time', 'cl.end_time']) ->addFrom(ChapterModel::class, 'c') ->join(ChapterLiveModel::class, 'c.id = cl.chapter_id', 'cl') ->inWhere('cl.course_id', $courseIds) ->andWhere('cl.start_time > :start_time:', ['start_time' => $startTime]) ->orderBy('cl.start_time ASC'); $pager = new PagerQueryBuilder([ 'builder' => $builder, 'page' => $page, 'limit' => $limit, ]); return $pager->paginate(); } /** * @param int $userId * @return ResultsetInterface|Resultset|CourseModel[] */ public function findLiveCourses($userId) { return $this->modelsManager->createBuilder() ->columns('c.*') ->addFrom(CourseModel::class, 'c') ->join(CourseUserModel::class, 'c.id = cu.course_id', 'cu') ->where('cu.user_id = :user_id:', ['user_id' => $userId]) ->andWhere('cu.role_type = :role_type:', ['role_type' => CourseUserModel::ROLE_TEACHER]) ->andWhere('c.model = :model:', ['model' => CourseModel::MODEL_LIVE]) ->getQuery()->execute(); } }