您的表格布局似乎不完整或缺少信息。
这些表是如何相互连接的?
另外,您要选择哪些数据以及使用哪些参数?
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 |