2013-02-21 59 views
0

加入我希望你能幫助我,因爲我的大腦現在出血:情結笨

進行具體說明:

在我的網站,我有一個表對比。 A vs是兩張圖像之間的投票。

表與包含2欄:id_pic1用於第一PIC和id_pic2用於第二。

每對鏈接到評論表(id_versus)和一個用戶表(id_versus也)。

最後一件事是:每個對每個圖片都鏈接到表投票(id_pic,id_versus)

我曾經使用cakePhP使得查詢變得容易,但現在,用CI,我的大腦被凍結。

如果有人可以幫助與我應該做的一般查詢的線索,我會感激生命。

在此先感謝

編輯: 這裏的DB的簡化圖:

id_pic1 id_pic2 id_author

用戶 ID

張圖片 ID

評論 id_versus id_author

投票 id_versus id_pic

+1

你想要什麼從DB要「問」?這是MySQL? – ghostika 2013-02-21 22:29:05

+0

我想要一個對象與包含$ versus-> comments,$ versus-> pic1,$ versus-> pic2等的對象......與我對比的所有內容。我知道這只是一個很大的疑問,cakePhP包含很多幫助(有限的遞歸),但在CI中,我必須說我不知道​​如何寫下它。 – 2013-02-21 23:48:44

回答

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?

你想挑選一個vs(參數= 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); 
} 

該函數接受一個與id相對應的並返回鏈接到它的所有數據。

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 

結果將包含大量列,並且我沒有測試過羯羊笨可以用雙列名的工作。
也會有相當多的'雙'行。對於每個註釋,每個投票,會有一個新行具有相同的對比數據

| ------------- VERSUS --------------| - PIC1 - | - PIC2 - | - USERS - | --------- COMMENT --------- | ------ VOTE ------ | 
| id | id_pic1 | id_pic2 | id_author | id | ... | id | ... | id | .... | id_versus | id_author | ... | id_versus | id_pic |