0

我希望你能帮助我,因为我的大脑现在正在流血:

具体解释一下:

在我的网站上,我有一个表格与。对决是两个图像之间的投票。

该表与包含 2 个字段:第一张图片为id_pic1 ,第二张图片为id_pic2

每个 vs 都链接到一个评论表(id_versus)和一个用户表(id_versus)。

最后一件事是:每个 vs 上的每张图片都链接到表投票 (id_pic,id_versus)

我曾经使用 cakePhP,所以 contains 使查询变得容易,但现在,使用 CI,我的大脑卡在了冻结状态。

如果有人可以帮助我解决我应该提出的一般性问题,我将不胜感激。

提前致谢

编辑:这是 db 的简化视图:

id_pic1 id_pic2 id_author

用户 编号

图片 编号

评论 id_与 id_author

投票 id_与 id_pic

4

2 回答 2

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();
于 2013-02-22T07:01:14.277 回答
0

您的表格布局似乎不完整或缺少信息。
这些表是如何相互连接的?

另外,您要选择哪些数据以及使用哪些参数?
a 的作者是否也是可以在用户表中找到的用户?

您想选择一个 vs (parameter = 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);
}

这个函数接受一个 vs 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

结果将包含很多列,我还没有测试 CodeIgniter 是否可以使用双列名称。
还会有很多“双”行。对于每条评论和每条投票,都会有一个具有相同 vs-data 的新行

| ------------- VERSUS --------------| - PIC1 - | - PIC2 - | - USERS - | --------- COMMENT --------- | ------ VOTE ------ |
| id | id_pic1 | id_pic2 | id_author | id | ... | id | ... | id | .... | id_versus | id_author | ... | id_versus | id_pic |
于 2014-06-18T17:45:21.817 回答