从codeigniter中的两个表中选择查询

Posted

技术标签:

【中文标题】从codeigniter中的两个表中选择查询【英文标题】:Select Query from two tables in codeigniter 【发布时间】:2015-07-29 20:06:25 【问题描述】:

我有 2 张桌子: 活动和注册。

事件字段:EventID 和 EventName

注册字段:MemberID 和姓名

我想提取该人的 EventName 和 Name-。如何使用模型执行此操作? 我的代码: 型号

function getAll()

    $query = $this->db->get('tblRegistration');
    if( $query->num_rows() > 0) 
        foreach ($query->result() as $row) 
            $data[] = $row;
        
    
    $query->free_result();
    return $data;

控制器

public function getallevents() 
    $this->load->model('events_model');

    $data['records'] = $this->events_model->getAll();

    $this->load->view('view-events', $data);

查看

              foreach ($records as $row):
                        echo "<tr>";
                        echo "<td> $row->Name</td>";
                        // echo "<td> $row->intLocationID</td>";
                        echo "</tr>";
                    endforeach;

编辑

好的,我已经从表格中添加了我想要的数据。

型号

   function getAll()

    // get all the records from the schools table

    $this->db->select('*');
    $this->db->from('tblRegistration as reg');
    $this->db->join('tblMeetRace as met', 'reg.intMeetRaceID = met.intEventID');
    $query = $this->db->get();

    // if the number of rows returned is more than 0
    if( $query->num_rows() > 0) 
        // loop through each record (row) and place that
        // record into an array called $data
        foreach ($query->result() as $row) 
            $data[] = $row;
        
    
    $query->free_result();
    // return the array to the controller
    return $data;

查看

     foreach ($records as $row):
                        echo "<tr>";
                        echo "<td> $row->intMeetRaceID/td>";
                        echo "<td> $row->intEventID</td>";
                        echo "</tr>";
                    endforeach;

但我收到以下错误:

遇到 php 错误 严重性:警告 消息:为 foreach() 提供的参数无效 文件名:views/view-events.php 行号:89

【问题讨论】:

【参考方案1】:

首先,您需要在事件表中添加另一列来存储MemberId,例如memberid。 一旦你有了它,当一个成员注册一个事件时,你可以将他的ID 存储在事件表中并关联它。

然后你可以使用Joins来获取数据

$this->db->select('*');
$this->db->from('registration as reg');
$this->db->join('events as evt', 'reg.id = evt.memberid');

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

【讨论】:

感谢重播,所以我必须把东西放在 select('*') 或 get() 中吗?还是选择一切的剂量? 它选择一切 如果您可以查看我现在所做的编辑,我会收到此错误 那是因为我认为结果是空的。尝试打印结果,看看你得到了什么。也可以试试 $this->db->last_query(),这会打印最新的查询,检查是否是你想要运行的查询

以上是关于从codeigniter中的两个表中选择查询的主要内容,如果未能解决你的问题,请参考以下文章

根据codeigniter中的外键从两个表中获取json编码数据

如何使用从两个表中的选择查询问题检索行

尝试从 codeigniter 代码中的 2 个表中获取值

查询从两个表中选择不匹配的记录

从 Codeigniter Active Record 中的子查询中选择

使用 CodeIgniter 查询从同一列中选择多条记录