xPDO выборка

Добрый день!
Сущуствует 3 таблицы: users, courses и связующая их usercourses. Можно ли как-то сделать выборку из courses с помощью одного запроса, если прописать связи классов. То есть фактически «пропуская» выборку usercourses:
$user = $modx->getObject('modUser', $modx->user->get('id'));
$courses= $user->getMany('Courses');
Может ли modx разрулить данную ситуацию штатными методами?
Орлов  Сергей
02 марта 2014, 05:03
modx.pro
1
970
0

Комментарии: 4

Саша Пекшев
02 марта 2014, 17:20
+1
Нет, вы должны в выборке прописать связи. Для того что бы работал $user->getMany, нужно делать производный класс от modUser и к нему присваивать связь к таблицу Courses
    Орлов  Сергей
    02 марта 2014, 19:51
    0
    Некоторое время поработав с modx'ом, заметил, что он «хорошо подготовлен» к решению различных задач. Мне нужно выбрать все «курсы» пользователя по id через связующую таблицу. Может это можно сделать проще и практичнее чем:
    $c = $modx->newQuery('UserCourses')
            ->where(array(
              'user_id' => $modx->user->get('id'),
            ))
            ->select(array(
               'course_id',
            ));
    
        $items = $modx->getCollection('UserCourses', $c);
        $course_ids = array();
        foreach($items as $v) {
            array_push($course_ids, $v->course_id);
        }
        $where = array(
    		'id:IN' => $course_ids,
    	);
        $courses = $modx->getCollection('Courses', $where);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
4