【问题标题】:return same result at multiple time in code igniter在 codeigniter 中多次返回相同的结果
【发布时间】:2017-05-31 06:49:47
【问题描述】:

[我想显示特定员工的特定奖励数据,但它在多个时间重复相同的结果 模型功能在这里 公共函数 get_all_awards($id = NULL) {

    $this->db->select('tbl_employee_award.*', FALSE);
    $this->db->select('tbl_employee.*', FALSE);
    $this->db->select('tbl_designations.*', FALSE);
    $this->db->select('tbl_department.department_name', FALSE);
    $this->db->from('tbl_employee_award');
    $this->db->join('tbl_employee', 'tbl_employee_award.employee_id  = tbl_employee.employee_id', 'left');
    $this->db->join('tbl_designations', 'tbl_designations.designations_id  = tbl_employee.designations_id', 'left');
    $this->db->join('tbl_department', 'tbl_department.department_id  = tbl_designations.department_id', 'left');
    $this->db->order_by("award_date", "desc");
    if (!empty($id)) {
        // var_dump($id);
        //die();
        $this->db->where('tbl_employee_award.employee_id',$id);
        $query_result = $this->db->get();

        $result = $query_result->row();

    } else {
        $query_result = $this->db->get();
        $result = $query_result->result();
    }
   // var_dump( $result->employee_id);
   // die();
    return $result;

}][1]

【问题讨论】:

  • 将employee 作为您的基表。也不要从表格中选择所有数据,只需选择您想要的特定数据。
  • 如何使员工表成为基表。先生,你可以编码吗
  • $this->db->from('tbl_employee_award'); 将其更改为 $this->db->from('employee');。然后将tbl_employee_award 表加入它和其他表。
  • 当我将员工表作为基础时,什么都没有显示

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

您必须将基表设置为 Employee 表。因为您需要根据员工而不是奖励的数据。

public function get_all_awards($id = NULL)
{
    $this->db->select("E.id, E.employee_name, A.award_names, DES.designation,  D.department_name");
    $this->db->from('tbl_employee as E');
    $this->db->join('tbl_employee_award as A', 'A.employee_id = E.employee_id', 'left');
    $this->db->join('tbl_designations as DES', 'DES.designations_id  = E.designations_id', 'left');
    $this->db->join('tbl_department as D', 'D.department_id  = E.department_id', 'left');
    $this->db->order_by("A.award_date", "desc");    
    if($id !== NULL)
    {
        $this->db->where('E.employee_id', $id);
    }

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

    $result = $query->result();
    print_r($result);
    die;
}

在上面的查询中,如果您有一个员工的单一奖励,那么您将在结果中得到单行。如果一个员工赢得了多个奖项,那么它将为同一员工返回多行但不同的奖项。如果任何员工两次获奖,那么您也将获得两次记录。

【讨论】:

  • 谢谢,但对我不起作用,因为 $query = $this->db->get(); (假)
  • $query = $this->db->get();这是怎么回事?
  • $query = $this->db->get(); var_dump($查询);死();输出布尔(假)
  • return $query->result(); 此行将返回结果...不是此$query = $this->db->get();
  • if($id !== NULL) var_dump($id);死();输出 16(即员工 ID),但会很有趣。不工作
猜你喜欢
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 2020-01-28
相关资源
最近更新 更多