Предположим, что у нас есть две таблицы:
topics: id, owner_id, modify_time ...
visits: topic_id, owner_id, visit_time
SELECT topics.*, visits.visit_time
FROM topics
LEFT JOIN visits_class ON visits_class.topic_id = topics_class.id AND visits_class.owner_id = %user_id%
WHERE modify_time > %time%
Вопрос в синтаксисе подобного решения в категориях ORM. Где как реализовано? Я делаю что-то типа (для простоты все поля объектов одноимённые с полями таблиц БД):
$topics = find_all('topic_class', array(
'*left_join' => 'visits ON visits.topic_id = topics.id AND visits.owner_id = $user_id',
'*set' => 'visit_time => visits.visit_time',
'modify_time>' => $time
));
Ну и потом - $topics[0]->visit_time() на общих правах, кроме модификации.
Есть ли идеи, как это сделать в общем случае красивее? Ну и да, подразумевается, что весь массив грузится одним запросом, естественно. Иначе достаточно тупо однострочную function visit_time() использовать без всяких join'ов...