代码点火器加入重新创建错误的 ID



我是codeigniter的新手,并且遇到了JOIN的问题。

我有2张桌子

super_admin_staff和super_admin_roles

super_admin_staff有一个名为"id"的唯一 id 列,它也有一个名为"role"的列

"角色"列对应于super_admin_roles的"ID"列。

我的模型 :

function superAdminStaff()
{
$this->db->select('*');
$this->db->from('super_admin_staff');
$this->db->join('super_admin_roles', 'super_admin_staff.role = super_admin_roles.id');

$query = $this->db->get();
$result = $query->result();
return $result;
}

我的班级 :

public function index()
{
if ($this->isSuperAdmin() != true) {
$this->loadThis();
} else {
$this->load->model('super_admin_staff_model'); 
$data['userRecords'] = $this->super_admin_staff_model->superAdminStaff(); 
// set up page title and description
$this->global['pageTitle'] = 'Staff List';
$this->global['pageDesc'] = 'Add, Edit or Resign Staff';
$this->loadViews("super_admin/staff", $this->global, $data, null); 
}
}

我的观点 :

<tbody>
<?php
if (!empty($userRecords)) {
foreach ($userRecords as $record) {
?>
<tr>
<td><img src="<?php echo base_url() . 'uploads/super_admin/' . $record->profile_picture ?>" class="wd-100 rounded-circle bd bd-2"></td>
<td class="align-middle"><?php echo $record->firstname ?></td>
<td class="align-middle"><?php echo $record->lastname ?></td>
<td class="align-middle"><?php echo $record->email ?></td>
<td class="align-middle"><?php echo $record->phone ?></td>
<td class="align-middle"><?php echo $record->role ?></td>
<td class="text-center align-middle">
<a class="btn btn-sm btn-danger deleteUser" href="<?php echo base_url() . 'super_admin_staff/deletestaff/' . $record->id; ?>" data-userid="<?php echo $record->id; ?>"><i class="fas fa-trash"></i></a>
</td>
</tr>
<?php
}
}
?>
</tbody>

一切都按预期工作,<?php echo $record->role ?>返回角色的名称

但是<?php echo $record->id ?>现在替换为super_admin_roles表中的 ID,而不是按预期super_admin_staff。

IM 尝试做的只是使用 super_admin_staff.roles 列中存储的 ID 从super_admin_roles获取角色名称,并且仍然使用 super_admin_staff 表中的 ID,以便我可以根据 ID 删除工作人员。

id是不明确的,因为它存在于查询中涉及的两个表中。

一种解决方案是枚举您希望查询返回的列。表别名对于缩短查询也很方便。

所以像这样:

$this->db->select('s.firstname, s.last_name, s.email, s.email, s.phone, s.role, s.id')
$this->db->from('super_admin_staff as s');
$this->db->join('super_admin_roles as r', 's.role = r.id');

我不确定您是否真的需要super_admin_roles表中的列。如果这样做,只需将它们添加到select即可。

相关内容

  • 没有找到相关文章

最新更新