首页 > 解决方案 > 在模型中使用 mysql join 时 Codeigniter 双行结果

问题描述

我正在开发 codeigniter web 应用程序,我正在对模型进行一些 JOIN 以显示来自 3 个表的特定数据,但它给了我双行,每个数据应该只有 1 行。当我的数据库中只有 1 行数据时没有发生这种情况,但是当我输入第二个数据时,它显示每个数据有 2 行,所以我有 4 行

表名是siswa,我想加入另一个表

这是 JOIN 数据库的模型

function delete_siswa($id)
    {
        return $this->db->delete('siswa',array('id'=>$id));
    }
    function get_data_siswa()
    {
        $this->db->select('sw.id, sw.nama, sw.j_kelamin, sw.tmp_lahir, sw.tgl_lahir, sw.agama, sw.alamat, sw.no_tlp, sw.email, ot.n_ibu, ot.n_ayah, sk.nama_sek');
        $this->db->from('siswa sw');
        $this->db->join('orang_tua ot', 'ot.id=sw.id_orang_tua');
        $this->db->join('sekolah sk', 'sk.id=sw.id_sekolah');
        return $this->db->get('siswa')->result_array();
    }

这是控制器

function index()
    {
        $data['siswa'] = $this->Siswa_model->get_data_siswa();

        $data['_view'] = 'siswa/index';
        $this->load->view('layouts/main',$data);
    }

这是视图

<tr>
                                    <th>No</th>
                                    <th>Nama</th>
                                    <th>Jenis Kelamin</th>
                                    <th>Tempat Lahir</th>
                                    <th>Tanggal Lahir</th>
                                    <th>Agama</th>
                                    <th>Alamat</th>
                                    <th>No. Telepon</th>
                                    <th>Ibu</th>
                                    <th>Ayah</th>
                                    <th>Email</th>
                                    <th>Nama Sekolah</th>
                                    <th>Actions</th>
                                 </tr>
                                </thead>
                                <tbody>
                                    <?php
                                    $no=1;
                                    foreach($siswa as $s){ ?>
                                    <tr>
                                    <td><?php echo $no++;?></td>
                                    <td><?php echo $s['nama']; ?></td>
                                    <td><?php echo $s['j_kelamin']; ?></td>
                                    <td><?php echo $s['tmp_lahir']; ?></td>
                                    <td><?php echo $s['tgl_lahir']; ?></td>
                                    <td><?php echo $s['agama']; ?></td>
                                    <td><?php echo $s['alamat']; ?></td>
                                    <td><?php echo $s['no_tlp']; ?></td>
                                    <td><?php echo $s['n_ibu']; ?></td>
                                    <td><?php echo $s['n_ayah']; ?></td>
                                    <td><?php echo $s['email']; ?></td>
                                    <td><?php echo $s['nama_sek']; ?></td>
                                    <td>
                                    <a class="btn btn-warning" href="<?php echo site_url('siswa/edit/'.$s['id']); ?>">Edit</a> | 
                                    <a class="btn btn-danger" href="<?php echo site_url('siswa/remove/'.$s['id']); ?>">Delete</a>
                                    </td>
                                    </tr>
                                    <?php } ?>
                                </tbody>

这是此错误的屏幕截图

每个数据应该只有一行,但我真的不知道,因为我还是 codeigniter 的新手。日志中没有错误

标签: phpmysqlcodeigniter

解决方案


你能从表中取出不同的记录吗,我认为连接查询会复制数据

$this->db->distinct();

将为此工作


推荐阅读