【问题标题】:Associative array from a database with codeigniter来自带有 codeigniter 的数据库的关联数组
【发布时间】:2016-09-28 09:37:32
【问题描述】:

在我的模型上,我尝试编写一个 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

我会得到这张桌子:

我想从那个表中提取一个关联数组,它看起来像这样:

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

'mid'=>number 在表中可以找到多少次 mid。 前任。 mid '13'=>1 因为你只能找到一次。

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

【问题讨论】:

  • 你想在你的模型中写查询???
  • 是的,您在控制器中处理发送的实际数据然后查看,对吧?
  • 纠正我,如果我错了,1)你想在 CI 模型等中转换这个查询,2)你的预期结果。最后,探索GROUP BY

标签: php mysql codeigniter


【解决方案1】:

试试这个查询可能对你有帮助,

$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(); 

【讨论】:

  • 遇到 PHP 错误严重性:通知消息:数组到字符串的转换文件名:views/test.php 行号:12 回溯:文件:/var/www/html/test/application/views/ test.php 行:12 功能:_error_handler 文件:/var/www/html/test/application/controllers/Test.php 行:9 功能:查看 文件:/var/www/html/test/index.php 行:315函数:require_once
  • 这是我得到的错误,在视图中我只是回显来自控制器的 var。
  • 你需要使用 print_r() 而不是 echo
  • 我现在将得到一个空数组:Array ( )
  • 尝试打印查询并在 phpmyadmin 上运行它,看看您将通过查询得到什么。
【解决方案2】:

我不确定您将如何在 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] =&gt; 3 [2] =&gt; 1 [6] =&gt; 2 ),它与我输入的$query(这是一个二维数组)相匹配。我希望您的查询输出存储在一个类似的数组中,但包含更多数据和键

【讨论】:

  • OP 有一个查询,我正在使用他的查询结果来生成这个他需要的新数组
  • 来自问题:但是我如何在 codeigniter 的 PHP 模型中聚合所有这些?我知道如何配置控制器和视图,但我不知道如何实际执行将获得所需数组的实际 php 模型。
  • but I don't know how to actually do the actual php model that will get me the desired array这不是答案吗?
  • 我认为混合两个答案是一种解决方案。也许
猜你喜欢
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 2010-12-21
相关资源
最近更新 更多