2015-05-23 4 views
1

это результаты мне нужно из базы данныхCodeigniter заселить вложенные ассоциации

{comment: 'hello there', user: [{name: 'sahan', id: 1}], id: 2} 

функции используется, чтобы получить комментарии

public function get_comments(){ 
    $query = $this->db->get('comments'); 
    return $query->result_array(); 
} 

У меня есть таблица комментариев и таблиц пользователей, когда пользователь комментирует что-то

comment is saved as follows 
comment > Comment text 
user: userid 

Поэтому, когда данные показаны, мне нужно ввести код, чтобы заполнить поле пользователя с данными пользователя, найденными из таблицы пользователей

Кто-нибудь знает, как это сделать? Я использовал эту функцию в SailsJS, но не знает, как сделать это здесь в CodeIG Sails.js populate nested associations

+0

Можем ли мы увидеть код, который вы используете, чтобы вытащить комментарии из db? –

+0

любые мысли @nivixzixer, пожалуйста? – Sahan

+0

Просто любопытно, но зачем вам данные пользователя внутри массива? Только один пользователь за комментарий, не так ли? –

ответ

1

Codeigniter «s активная запись не является столь значительной, как SailJS активной записи, но вы можете добиться того, что вы просите с двумя запросами в рамках тот же метод.

Я принимаю, что таблица comments имеет внешний ключ для таблицы users через поле user_id.

public function get_comments() { 

    /* Get all the comments */ 
    $query = $this->db->get('comments'); 
    $comments = $query->result_array(); 

    /* Loop through each comment, pulling the associated user from the db */ 
    foreach $comments as &$comment { 
     $query = $this->db->get_where('users', array('id' => $comment['user_id'])); 
     $user = $query->result_array(); 

     /* Put the user's data in a key called 'user' within the comment array */ 
     $comment['user'] = $user; 

     /* Remove the unnecessary user_id and $user variable */ 
     unset($comment['user_id']); 
     unset($user); 
    } 
    return $comments; 
} 
+0

Что делать, если я делаю SQL Join? Как этот пример здесь? http://www.tutorialspoint.com/sql/sql-using-joins.htm – Sahan

+0

Вы могли бы, но код будет сложным для хранения информации пользователя в массиве. –

+0

Так что, на ваш взгляд, ваше решение гораздо эффективнее? – Sahan

Смежные вопросы