【问题标题】:Codeigniter - Query inside foreachCodeigniter - 在 foreach 中查询
【发布时间】:2013-05-28 06:02:28
【问题描述】:

所以我正在使用最新的 Codeigniter,我的问题是我有这种情况,我应该在控制器的 foreach 中使用查询。我有在一个列表中显示所有生产订单的视图,并且我希望所有用户制作的 cmets 和其他表中的注释在它们下面。编码中的一般情况,但是我应该如何使用 Codeigniter 来执行此操作,因为您应该将 SQL 子句保留在模型中。

在我只是在控制器中分叉原始 SQL 之前,我想问一下什么是更温和和正确的方法来实现这一点。谢谢!

控制器

<?php
public function show()
{    
  $this->load->database();

  $this->load->model('report_model');
  $this->load->helper('url');

  $data['productionOrders'] = $this->report_model->getAllProductionOrders();
  $this->load->view('all_reports', $data);
}
?>

型号

<?php
function getAllProductionOrders()
{
  $this->db->select(*);
  $this->db->from('dbo.QualityControl_ProductionOrders');

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

  return $query->result();
}
?>

查看

<!DOCTYPE html>
<html lang="en">

 <head>
   <meta charset="utf-8">
 </head>

 <body>

  <?php
    foreach ($productionOrdersas $row)
    {
  ?>

  <div> 
    ProdNo: <?php echo $row->Prodno; ?>
    Descriptions: 
    Hours:
    etc etc etc etc
  </div>

  [I want here comments and all user made notes]

  <?php
    }
  ?>
 </body>
</html>

【问题讨论】:

    标签: codeigniter foreach comments


    【解决方案1】:

    您应该努力避免使用类似这样的附加查询来翻转结果集。想象一下,如果您有 500 个生产订单。生成简单报告需要 501 个查询

    相反,使用连接并解析您的结果,方法是仅打印一次标题信息或使用 Underscore.php 生成嵌套结果,如下所示:

    http://codebyjeff.com/blog/2012/08/no-more-machine-gunning-use-underscore-php

    【讨论】:

      【解决方案2】:

      不确定你在问什么,但试试这个 -

      在控制器中,

          $data['productionOrders'] = $this->report_model->getAllProductionOrders();
      
          foreach($data['productionOrders']['id'] as $id)
          {
               $data['comment'][$id] = $this->report_model->getCommantsByOrderId($id);
          }
      

      【讨论】:

      • 这是一个很大的禁忌。您永远不应该在循环内触发查询。相反,应该考虑加入。看看@jmadsen 的回答和链接
      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2015-12-08
      • 1970-01-01
      • 2012-07-25
      相关资源
      最近更新 更多