来自具有codeigniter的数据库的关联数组

时间:2016-09-28 09:37:32

标签: php mysql codeigniter

在我的模型上,我尝试编写一个php模型,它将从数据库中获取一个关联数组。但我不太清楚如何处理这个问题。 所以在我执行这个SQL查询之后:

SELECT balance_events.weight,balance_events.added_date,
       balance_entries.mid FROM balance_events, balance_entries 
WHERE balance_entries.added_date BETWEEN '2016-08-02' AND '2016-08-03' 
  AND balance_entries.ptid =12 
  AND balance_entries.beid = balance_events.id

我会得到这张表:

enter image description here

从那张表中我想提取一个看起来像这样的asociative数组:

count = ['13'=>1, '6'=>4, '16'=>3, '4'=>3]

其中'mid'=>number表示可以在表格中找到mid的次数。 恩。 mid '13'=>1因为您只能找到一次。

我认为我将不得不使用SQL COUNT函数,但我如何在codeigniter中的PHP模型中聚合所有这些?我知道如何配置控制器和视图,但我不知道如何实际执行实际的php模型,这将获得所需的数组。

2 个答案:

答案 0 :(得分:0)

尝试此查询可能对您有帮助,

$result = $this->db->select('balance_events.weight,balance_events.added_date,COUNT(balance_entries.mid) as mid_count')
                   ->from('balance_events, balance_entries')
                   ->where('balance_entries.added_date BETWEEN "2016-08-02" AND "2016-08-03" ')
                   ->where('balance_entries.ptid','12')
                   ->where('balance_entries.beid','balance_events.id')
                   ->group_by('balance_entries.mid')
                   ->get();

return $result->result_array(); 

答案 1 :(得分:0)

我不确定如何在SQL中创建它,但是因为你标记了php,我编写了一个可以做到这一点的函数。

<?php
  $query = array(array("mid"=>13), array("mid"=>2), array("mid"=>13), array("mid" =>6), array("mid" => 13), array("mid" => 6));

  function createMidArray($queryResult){
      $returnArray = array();
      foreach ($queryResult as $qr){
          $returnArray[$qr['mid']]++;   
      }
  return $returnArray;
}

  print_r(createMidArray($query));

?>

这是Array ( [13] => 3 [2] => 1 [6] => 2 )的输出,它匹配我输入的$查询(这是一个2D数组)。我希望你的查询输出存储在一个类似的数组中,但有更多的数据和键