从数据库显示名称而不是ID不正确
问题描述:
我想显示一个名称从数据库而不是id(sittername),但我认为它显示在所有行中错误的相同名称。 我想要的是从$ ids数组中获取每个ID的名称。 我希望你能帮助我。我在笨框架使用MVC ..从数据库显示名称而不是ID不正确
我的控制器:
$results = $this->Admin_model->getSitter_Requests($config["per_page"], $page);
foreach ($results as $item)
{
$data['data1'] = [];
$sitter_job_id = $item['sitter_job_id'];
我的问题是在这部分代码,sittername有只有一个来自过去的ID在我的$ ids数组名。我想要的是从$ ids数组中获取每个ID的名称。
$ids = $item['sitter_id'];
foreach ((array)$ids as $id)
{
if($id != 0 && $id != null){
$sittername = $this->Admin_model->get_sitter_name($id[0]);
$data["sittername"] = $sittername;
}
}
}
$data["results"] = $results;
$data["links"] = $this->pagination->create_links();
$this->load->view('admin/superadmin_sitter_requests',$data);
我的模型:
public function getSitter_Requests($limit, $start)
{
$this->db->select('*');
$this->db->limit($limit, $start);
$query = $this->db->get('ps_sitter_jobs');
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$data[] = $row;
}
return $data;
}
return array();
}
function get_sitter_name($id) {
$this->db->select('fname');
$this->db->where('id', $id);
$query = $this->db->get('ps_cms_users');
return $query->row()->fname;
}
ps_sitter_jobs table columns:
sitter_job_id | int(11) PRI
sitter_id | int(11) FK from ps_cms_users(id)
seller_sitter_id | int(11)
token_trans_id | varchar(255)
camp_id | int(11)
book_id | int(11)
sitter_status | enum('0','1','2','3','4')
created_date | datetime
modify_date | datetime
assign_new_sitter_btn_disabled | int(11)
refund_btn_disabled | int(11)
===================================================
ps_cms_users table columns:
id | int(11) PRI
email | varchar(128)
password | varchar(128)
fname | varchar(128)
lname | varchar(128)
mobile | varchar(20)
roleId | int(4)
createdBy | int(11)
createdDtm | datetime
updatedBy | int(11)
updatedDtm | datetime
partner_type | int(11)
state | int(11)
city | int(11)
userDesc | varchar(255)
==================================================
笔者认为:
if(count($results) > 0){
foreach ($results as $result){
$result_id = $result['sitter_job_id'];
?>
<tr>
<td>
<?php echo '#'.$result_id; ?>
</td>
<td>
<?php
if($result['sitter_id'] == 0 || $result['sitter_id'] == null)
{
echo "Sitter Not Assigned yet";
}
else
{
echo $sittername;
}
}
?>
答
不是很容易完全理解您想在这里完成的,但我认为你可以使用一个JOIN
而不是循环你的第一个结果。这是一个建议。 (我已经离开了分页和HTML格式为清楚起见)
控制器
$data["results"] = $this->Admin_model->getSitter_Requests();
$this->load->view('admin/superadmin_sitter_requests', $data);
模型(Admin_model.php)
public function getSitter_Requests()
{
$this->db->join('ps_cms_users', 'ps_cms_users.id = ps_sitter_jobs.sitter_id');
return $this->db->get('ps_sitter_jobs')->result();
}
您的视图(管理/ superadmin_sitter_requests)
foreach ($results as $result)
{
echo 'SITTER_JOB_ID = ' . $result['sitter_job_id'];
echo 'SITTER_ID = ' . $result['sitter_id'];
echo 'SITTER_FIRSTNAME = ' . $result['fname'];
}
我希望这有助于。
+1
Thaaaanls @Klaas这正是我想要的。您。你的模型代码中的一件小事。我应该使用result_array()而不是result()。再次感谢 –
请提及表格和它们的列,这样可以很容易地解决这个问题。如果ps_sitter_jobs和ps_cms_users有外键关系,那么你可以有一个内部联接(因为表和数据不清楚 有问题) –
我已经添加表结构和我的具体问题。谢谢 –