将参数传递给codeingiter中的模型

时间:2018-05-10 19:44:05

标签: php codeigniter

目前在我的模型中,我在' XYZ'中进行了硬编码。这有效,因为我得到了正确数量的XYZ建筑物,但还有50个其他建筑物也需要。对所有建筑物进行硬编码对我来说没有意义。

如何将建筑物作为参数传递。

我的查看文件如下所示:



<div class="col-md-4 col-sm-4 col-xs-12">
  <div class="x_panel tile">
    <div class="x_title">
      <h2>Buildings</h2>
      <div class="clearfix"></div>
    </div>
    <div class="x_content">
      <h4>Total work requests</h4>
      <?php foreach ($buildings as $bldg){?>
        <div class="widget_summary">
          <div class="w_left w_25">
            <span><?php echo $bldg['Building_Code'];?></span>
          </div>
          <div class="w_center w_55">
            <div class="progress">
              <div class="progress-bar bg-green" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 66%;">
                <span class="sr-only">60% Complete</span>
              </div>
            </div>
          </div>
          <div class="w_right w_20">
            <span><?php echo $countBuildings; ?>
            </span>
          </div>
          <div class="clearfix"></div>
        </div>
      <?php } ?>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

我的控制器看起来像这样:

&#13;
&#13;
$data["countBuildings"]= $this->Buildings_model->getBldgCount('XYZ');
$this->load->view('main/header');
$this->load->view('main/body', $data);
$this->load->view('main/footer');
&#13;
&#13;
&#13;

我的模型看起来像这样:

&#13;
&#13;
public function getBldgCount($queryBuilding){
  $this->db->select('*');
  $this->db->where('Building_Code', $queryBuilding);
  $this->db->from('work_requests');
  $count = $this->db->count_all_results();
  return $count;
}
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:0)

您需要更改方法。 不需要对构建代码进行硬编码。你甚至不需要传递建筑规范。

您需要在查询中使用group by,以便返回包含count的所有建筑物。您的模型函数将如下所示:

public function getBldgCount(){
    $this->db->select('Building_Code, COUNT(id) as total');
    $this->db->group_by('Building_Code');
    $this->db->get('work_requests');
}

答案 1 :(得分:0)

您需要更改方法。 不需要对构建代码进行硬编码。您甚至不需要传递建筑规范。

您需要在查询中使用group by,以便返回具有count的所有建筑物。

public function getBldgCount(){
    $this->db->select('Building_Code, COUNT(id) as total');
    $this->db->group_by('Building_Code');
    $this->db->get('work_requests');
}

答案 2 :(得分:0)

在您的控制器中,您必须在$data建筑物数量中设置数组值。

在控制器中替换:

$data["countBuildings"]= $this->Buildings_model->getBldgCount('XYZ');
$this->load->view('main/header');
$this->load->view('main/body', $data);
$this->load->view('main/footer');

。通过

foreach($data['buildings'] as $k=>$v){
    $data["buildingcount"][$k]["count"] = $this->Buildings_model->getBldgCount($v);
}

$this->load->view('main/header');
$this->load->view('main/body', $data);
$this->load->view('main/footer');

您必须根据需要更新视图代码以适应新建筑物计数数据。

更新了视图:

<div class="col-md-4 col-sm-4 col-xs-12">
  <div class="x_panel tile">
    <div class="x_title">
      <h2>Buildings</h2>
      <div class="clearfix"></div>
    </div>
    <div class="x_content">
      <h4>Total work requests</h4>
      <?php foreach ($buildings as $bk=>$bldg){?>
        <div class="widget_summary">
          <div class="w_left w_25">
            <span><?php echo $bldg['Building_Code'];?></span>
          </div>
          <div class="w_center w_55">
            <div class="progress">
              <div class="progress-bar bg-green" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 66%;">
                <span class="sr-only">60% Complete</span>
              </div>
            </div>
          </div>
          <div class="w_right w_20">
            <span><?php echo $buildingcount[$bk]['count']; ?>
            </span>
          </div>
          <div class="clearfix"></div>
        </div>
      <?php } ?>
    </div>
  </div>
</div>