[image]

В каких ORM какой синтаксис на такое действие?

Теги:Linux
 
+
-
edit
 

KRoN73
Balancer

администратор
★★★★★
Предположим, что у нас есть две таблицы:

topics: id, owner_id, modify_time ...
visits: topic_id, owner_id, visit_time

Я хочу загрузить массив топиков за последнее время с пометками о прочтении юзерами. В терминах SQL это будет:

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'ов...

[/p][/p][/p][/p][/p][/p]

// Транслировано с http://www.linux.org.ru/forum/web-development/5805086
   

в начало страницы | новое
 
Поиск
Настройки






Статистика
Рейтинг@Mail.ru
АвиаТОП
 
Яндекс.Метрика
website counter
 
free counters