2010-01-29 1 views
2

Используя ORM, я хочу иметь возможность загружать все опубликованные статьи, в которых пользователь сделал комментарий.Помощь с Kohana ORM?

комментарии таблица

comment_id 
user_id 
article_id 
etc.... 

Использование ORM, я могу получить доступ все статьи, размещенные пользователем, но как бы я иметь доступ все статьи, в которых пользователь комментировали?

Благодаря

Edit:

Еще одна проблема есть, если комментарии пользователей по той же статье в два раза, что статья покажет два раза .. как изменить группу по статье одного объекта из в другом?

Также, как изменить порядок одного объекта от другого?

Im using 2.3.4.

+0

Какую версию Коханы вы используете? – dusan

ответ

0

ORM внутри kohana в основном для простых задач. Хотя я уверен, что это возможно сделать это в ОРМ Я предпочитаю использовать нормальные запросы для немного более сложных задач:

$this->db = Database::instance(); 
$this->db->query(" 
    select 
     user_id 
     article_id 
     id as comment_id 
    from 
     comments 
    left join 
     articles 
    on 
     articles.id = comments.article_id 
    where 
     user_id = $user_id 
    group by 
     comments.article_id 
"); 

что-то, как это должно сделать работу, если я не делал никаких ошибок

5

В псевдокоде, попробуйте это ...

  • В статье модели, Есть $has_many = array('comments');

  • В комментарии модели, Есть $belongs_to = array('article');

  • А в коде, где вы запрашиваете:

.

$comments = ORM::factory('comment') 
       ->where('user_id', $user_id); 
       ->find_all(); 

foreach($comments as $comment) 
{ 
    $article_id = $comment->article->id; 
} 

К сожалению, это не решает повторяющиеся записи статьи, когда $user_id комментарий более чем один раз в статье ... Вы, возможно, потребуется сделать немного больше исследований на вершине этого.

+0

Возможно, это было не так, как псевдокод, как я думал, это будет ... = = –