2013-02-21 5 views
0

Я надеюсь, что вы можете мне помочь, потому что мой мозг кровотечение прямо сейчас:комплексов присоединиться к CodeIgniter

Чтобы объяснить конкретно:

На моем сайте, у меня есть таблица в сравнении. А против - это голосование между двумя изображениями.

В таблице 2 в сравнении содержит поле: id_pic1 для первого ПОС и id_pic2 за секунду.

Каждый против связан с комментарии таблицы (id_versus) и таблицы пользователей (id_versus также).

Последняя вещь: каждый pic на каждом противу является ссылкой на таблицу голосования (id_pic, id_versus).

Раньше я использовал cakePhP, поэтому содержал простой запрос, но теперь, с CI, мой мозг застрял на замораживании.

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

Заранее спасибо

EDIT: Вот упрощенный вид дб:

против id_pic1 id_pic2 id_author

пользователи ID

фото ID

комментарии id_versus id_author

голос id_versus id_pic

+1

Что вы хотите «спросить» у БД? Это mysql? – ghostika

+0

Я хочу объект против того, кто содержит комментарии $ versus->, $ versus-> pic1, $ versus-> pic2 и т. Д. Все, что связано с моим против. Я знаю, что это всего лишь один большой запрос, cakePhP, содержащий много помогал (с его ограниченной рекурсивностью), но в CI я должен сказать, что я не знаю, как записать его. –

ответ

0

Это как несколько объединений осуществляются в CI, Сделайте Ваш согласно этому

 $this->db->select('aw.id,awt.title,aw.price,aw.email,aw.is_shop as star_shop,aw.video'); 
     $this->db->from('artworks aw'); 
     $this->db->join('artwork_translations awt', 'aw.id = awt.artwork_id'); 
     $this->db->join('languages l', 'l.id = awt.language_id'); 
     $this->db->where('l.code', $language_code); 
     $this->db->where('awt.status', 1); 
     $this->db->where('aw.artist_id', $artist_id); 
     $this->db->order_by('aw.id DESC'); 

     $sub_categories = $this->db->get(); 

     return $sub_categories->result(); 
0

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

Кроме того, какие данные вы пытаетесь выбрать и по каким параметрам?
Является ли authord a versus также пользователем, который можно найти в таблице пользователей?

Вы хотите выбрать вариант (параметр = id_versus) и выбрать все данные из этого?

function showDataFromVersus($versusToShow) { 
    $this->db->select('*');         // select all data 
    $this->db->from('versus');        // get data from table versus 
    $this->db->join('pics', 'pics.id = versus.id_pic1');  // get data pic2 
    $this->db->join('pics', 'pics.id = versus.id.pic2');  // get data pic1 
    $this->db->join('users', 'users.id = versus.id_author'); // get data versus author 
    $this->db->join('comments', 'comments.id_versus = versus.id'); // select comments 
    $this->db->join('users', 'users.id = comments.id_author'); // get data comment author 
    $this->db->join('vote', 'vote.id_versus = versus.id'); // get votes 
    $this->db->where('versus.id', $versusToShow); 
} 

Эта функция принимает идентификатор против и возвращает все данные, связанные с ним.

для MySQL-запрос для этого будет

SELECT * 
    FROM versus 
     JOIN pics ON pics.id = versus.id_pic1 
     JOIN pics ON pics.id = versus.id_pic2 
     JOIN users ON users.id = versus.id_author 
     JOIN comments ON comment.id_versus = versus.id 
     JOIN users ON users.id = comments.id_author 
     JOIN vote ON vote.id_versus = versus.id 
    WHERE versus.id = 1 

Результат будет содержать много столбцов, и я не проверял погоду CodeIgniter может работать с именами двойных столбцов.
Там также будет довольно много «двойных» рядов. Для каждого комментария и каждого голосования будет новая строка с теми же данными против

| ------------- VERSUS --------------| - PIC1 - | - PIC2 - | - USERS - | --------- COMMENT --------- | ------ VOTE ------ | 
| id | id_pic1 | id_pic2 | id_author | id | ... | id | ... | id | .... | id_versus | id_author | ... | id_versus | id_pic | 
Смежные вопросы