所以我正在使用最新的Codeigniter,我的问题是我有这种情况,我应该在控制器中的foreach内使用查询。我有一个视图,它在一个列表中显示所有生产订单,我希望所有用户在其他表中创建注释和注释。编码的一般情况,但我应该如何使用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>
答案 0 :(得分:2)
如果您有500个生产订单,那么您应该努力避免使用其他类似的查询来覆盖结果集。这是501的查询以制作简单的报告
相反,请使用加入&amp;通过仅打印标题信息一次或使用Underscore.php来生成嵌套结果来解析结果,如下所示:
http://codebyjeff.com/blog/2012/08/no-more-machine-gunning-use-underscore-php
答案 1 :(得分:-1)
不确定你问的是什么,但试试这个 -
在控制器中,
$data['productionOrders'] = $this->report_model->getAllProductionOrders();
foreach($data['productionOrders']['id'] as $id)
{
$data['comment'][$id] = $this->report_model->getCommantsByOrderId($id);
}