0

我有两张桌子。

决赛选手表格,其中列出了带有 ID、姓名等字段的决赛选手。存储这些决赛入围者投票的投票表。投票表中“已确认”字段为“是”的一行表示一票。

为了获得特定决赛选手的票数,我运行

$this->db->where('finalist_id', $finalist_id);
$this->db->where('confirmed', 'yes');
$query = $this->db->get('votes');
return $query->num_rows();

这让我得到了行数。(投票)

现在我想做的是遍历我的决赛选手并列出他们的姓名、他们的 ID 和他们的票数,但我正在努力在我的控制器中编写代码。

我的控制器:

$this->load->database();

            $query = $this->db->get('finalists');
            $data['finalists'] = $query->result_array();


                $this->db->where('finalist_id', $finalist->id);
                $this->db->where('confirmed', 'yes');
                $query = $this->db->get('votes')
                $data['votes'] = $query->result_array();


    $this->template
            ->build('admin/listing', $data);

我的观点:

<?php foreach ($finalists as $finalist): ?>



<li>ID:<?php echo $finalist['id'] ?>, Name:<?php echo $finalist['name'] ?>, votes:<?php echo $finalist['votes'] ?></li>


<?php endforeach ?>

所以我想要实现的是将关键投票及其结果添加到数组 $finalists - 显然是正确的,我无法理解如何做到这一点。

我想我应该遍历决赛选手并以某种方式插入该特定决赛选手的查询结果。

任何帮助,将不胜感激。

4

2 回答 2

0

试试这个到你的控制器

   $this->load->database();
   $this->db->select('*');
   $this->db->from('finalists');
   $this->db->join('votes',finalists.id = votes.finalist_id);
   $this->db->where('votes.confirmed', 'yes');

   $query = $this->db->get();
   $data['finalists'] = $query;


   $this->template->build('admin/listing', $data);

这将是你的看法

<?php foreach ($finalists->result() as $finalist){ ?>



<li>ID:<?php echo $finalist->id; ?>, Name:<?php echo $finalist->name; ?>, votes:<?php echo $finalist->votes; ?></li>


<?php } ?>

更新

于 2013-08-06T00:49:48.017 回答
0

首先处理原始 SQL 查询,然后您可以弄清楚如何在 codeigniter 中实现。你必须先了解join。这样的事情应该让你开始:

SELECT f.id, f.name, COUNT(v.confirmed) AS votes
FROM finalists AS f
INNER JOIN votes AS v
  ON f.id = v.finalist_id
WHERE v.confirmed = 'yes'
GROUP BY f.id

这个链接应该让您更好地了解如何使用 codeigniter 的 ActiveRecord 类形成更复杂的查询。ellislab.com/codeigniter/user-guide/database/active_record.html

于 2013-08-07T00:32:39.910 回答