【问题标题】:group rows based on a column codeigniter基于列 codeigniter 对行进行分组
【发布时间】:2017-03-09 16:38:26
【问题描述】:

我想根据列对行进行分组。我附上了我的表格 我试过了,我的问题是,当使用 group_by 时,它只会返回每个用户的一行。我想按 user_id 从这个表组中获取全部数据 型号

 public function get_pdf_print( $start_date, $end_date) {
          $this->db->select('*');
        $this->db->from('jil_invoices');
   $this->db->group_by('jil_invoices.inv_userid');
  $this->db->where('jil_invoices.inv_dated >=', $start_date);
        $this->db->where('jil_invoices.inv_dated <=', $end_date);
  $query = $this->db->get();
return $query->result();
}

【问题讨论】:

  • 首先讨论你需要什么?如果您想按用户 ID 使用 groupby,它将为每个用户重新运行一条记录,如果您想获取所有行,则不能将 groupby 与 userid 一起使用
  • 请简要介绍您的问题..
  • 我知道 group_by 不会得到它。所以如果有人知道请帮忙
  • @devpro 我知道它不会被 group_by 获取。所以如果有人知道请帮忙
  • 我建议你获取所有记录而不是使用 php 进行分组

标签: php mysql codeigniter codeigniter-2


【解决方案1】:

如果您想将GROUP BY 与 userid 列一起使用,请注意它不会返回所有行。

我建议您获取所有行,而不是使用 PHP 进行分组,例如:

在您的模型中:

public function get_pdf_print($start_date, $end_date) {
    $this->db->select('*');
    $this->db->from('jil_invoices');
    $this->db->where('jil_invoices.inv_dated >=', $start_date);
    $this->db->where('jil_invoices.inv_dated <=', $end_date);
    $query = $this->db->get();
    return $query->result_array(); // here i am using result_array function will return result into array.
}

在您的控制器中:

$records = $this->model_yourmodel->get_pdf_print($startDate,$endDate);
$userData = array();
foreach ($records as $key => $value) {
    $userData[$value['inv_userid']][] = $value; // get all record against each user
}

【讨论】:

  • 根据用户id选择数据的条件在哪里
  • @saleena: 不需要在哪里使用用户 ID.. 你想获取特定的用户数据吗?
  • @saleena: 它将起作用,获取所有记录并在您的控制器中检查数据print_r($userData);
  • @我检查了。它获取所有行,我会告诉我需要的是,显示用户 ID,然后是他的发票,然后是另一个用户 ID 和他的发票,依此类推
  • @saleena:是的,它会获取所有记录,那么你现在需要什么?你还好吗?
猜你喜欢
  • 1970-01-01
  • 2021-10-06
  • 2013-09-27
  • 2016-09-19
  • 1970-01-01
  • 2019-05-09
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多