php - 在模型中使用 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 的新手。日志中没有错误
解决方案
你能从表中取出不同的记录吗,我认为连接查询会复制数据
$this->db->distinct();
将为此工作
推荐阅读
- android - 在 Xamarin.Forms Android 应用程序中,按下设备后退按钮和应用程序图标后再次调用 MainActivity.OnCreate?
- c - SIGCHLD 和 fork + waitpid() 在一个库中
- javascript - 执行单击,直到可以实际单击元素
- laravel - 将请求数据传递给模型观察者类
- python - list .remove() 函数是如何工作的?
- node.js - 使用 ioRedis 连接到 ElastiCache 时出现随机 SSL 握手错误
- swift - Swift Core Data 保存到 /dev/null 所以它只在内存中
- kubernetes - 通过切换到新池来升级GKE集群:集群间服务通信会失败吗?
- java - java Flux中按对象属性分组
- azure - 如何在 Azure DevOps Pipeline 中设置和读取用户环境变量?