Так уж получилось, что изначально наши getdata-процессоры были рассчитаны на работу с классами (таблицами), у которых primaryKey — ID. Но случается, что необходимо поработать и с другими таблицами, в которых нет этой колонки. Вот пишу краткую заметочку, которая может помочь в таких случаях. Конечно, можно попробовать решить проблему на уровне $c->select(array("{$alias}.pk as id"));, но и с этим тоже могут возникнуть сложности. Оставляю ссылку на код, который использовался для решения данной проблемы. Только имейте ввиду, что $this->xpdo там фигурирует, это для соединения с другой базой данных, то есть где-то оно и не нужно. Самое главное там — getPK(). Но и это временный костыль, так как рассчитано на таблицы, в которых первичный ключ — только одна колонка.
В общем, все это только на заметку, но в дальнейшем будет использовано для написания обновленной версии процессоров, более универсальных.