无法从模型查询中获得预期的输出。我应该使用什么查询?

时间:2019-01-05 08:09:10

标签: php jquery html mysql codeigniter-3

我正在使用Codeigniter,

我有一个表,我正在将数据插入数据库,而数据要插入两次取决于年份和六个月。

所以我的表数据是

------------------------------------------------
id |m_id  | primary | secondary  | Duration
------------------------------------------------
1  |  1   | 100     | 80         | 12m
------------------------------------------------
2  |  1   | 50      | 40         | 6m
------------------------------------------------
3  |  2   | 300     | 150        | 12m
------------------------------------------------
4  |  2   | 150     | 70         | 6m
------------------------------------------------
5  |  3   | 500     | 300         | 12m
------------------------------------------------
6  |  3   | 300      | 200         | 6m

现在我必须从数据库中获取数据,并且我希望输出看起来像这样

--------------------------------------------
id  |m_id | primary        | secondary    
    |     | 12m |6m        |12m   |6m        
--------------------------------------------
1   |1    |100  |50        | 80  |40  
--------------------------------------------
2   |2    |300  |150       | 150  |70 
--------------------------------------------
3   |3    |500  |300       | 300  |200      

所以我试图在视图页面上显示数组,所以我print_r($row)并得到类似的输出

stdClass Object ( [id] => 1 [m_id] => 1 [primary] => 100 [secondary] =>80 [Duration] => 12m ) 
stdClass Object ( [id] => 2 [m_id] => 1 [primary] => 50  [secondary] => 40 [Duration] => 6m) 
stdClass Object ( [id] => 3 [m_id] => 2 [primary] => 300 [secondary] => 150 [Duration] => 12m)
stdClass Object ( [id] => 4 [m_id] => 2 [primary] => 150 [secondary] => 70 [Duration] => 6m)
stdClass Object ( [id] => 5 [m_id] => 3 [primary] => 500 [secondary] => 300 [Duration] => 12m)
stdClass Object ( [id] => 6 [m_id] => 3 [primary] => 300 [secondary] => 200 [Duration] => 6m  ) 

但是在列表中,我正在输出。我没有添加金额,因为输入的金额有误。这不是异常输出。  我的模型查询中存在一些问题。

--------------------------------------------
id  |m_id | primary        | secondary    
    |     |12m  |6m        |12m   |6m 
--------------------------------------------
 1  |1    |     |          |      | 
 2  |1    |     |          |      | 
 3  |2    |     |          |      | 
 4  |2    |     |          |      |
 5  |3    |     |          |      | 
 6  |3    |     |          |      |

我的查看代码是

<table id="list" border="1">
        <thead>
  <tr>
    <th rowspan="2">id</th>
    <th rowspan="2">m_id</th>
    <th colspan="2">Primary</th>
    <th colspan="2">Secondary</th>
  </tr>

  <tr>
    <th>12m</th>
    <th>6m</th>
    <th>12m</th>
    <th>6m</th>
  </tr>
</thead>
        <tbody> 

        <?php 

        if($activityfeeslist)
        {
            $n = 1;
            foreach ($activityfeeslist as $rows)
            //print_r($rows);
            if($rows->Duration=='12m'){
                $primary12=$rows->primary;
                $secDep12=$rows->secondary;

            }else{
                $primary6=$rows->primary;
                $secDep6=$rows->secondary;
            }
            {?>
              <tr>
                <td><?php echo $n++;?></td>
                <td><?php echo $rows->m_id;?></td>

                <td><?php echo $primary12;?></td>
                <td><?php echo $primary6;?></td>

                <td><?php echo $secDep12;?></td>
                <td><?php echo $secDep6;?></td>

        <?php 
        }}?>
        </tbody>
      </table>

控制器

public function activityFees()
  {
        $data['activityfeeslist'] = $this->Fees_model->activityFessList();
        $this->load->view('fees/activityFees',$data);
  }

模型

public function activityFessList(){
        $getDetails = array('tbl_activityFees2.is_feesActive'=>1);
        $result = $this->db->where($getDetails)
                           ->select("*")
                           ->from('tbl_activityFees2') 
        ->join('activity_name','activity_name.m_id=tbl_activityFees2.m_id')
                              ->get()
                              ->result();
    if($result)
        {
           return $result;  
        }
        else 
        {
           return 0;    
        }
        }

您能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

是的,模型查询和视图中都存在错误。 在视图中,您正在迭代和分解12m和6m,而不是在视图中这样做,应该使用类似以下的查询:

$getDetails = array('tbl_activityFees2.is_feesActive'=>1);
$result = $this->db->where($getDetails)
                   ->where('Duration', '=', '12m')
                   ->select('m_id', 'primary as primary12m', 'secondary as secondary12m')
                   ->from('tbl_activityFees2') 
        ->join('tbl_activityFees2 as t2','t2.m_id=tbl_activityFees2.m_id')->where('Duration', '=', '6m')->select('primary as primary6m', 'secondary as secondary6m')
        ->join('activity_name','activity_name.activity_name_id=tbl_activityFees2.activity_name_id')
                      ->get()
                      ->result();

我已经两次连接同一张表以直接从查询中获取结果。 Systax我有点不对劲,但我希望你能明白。

答案 1 :(得分:0)

如果您要在视图中的循环中添加行,而不只是更改视图

您的activityFees控制器是正确的..如果您从其他构造函数中加载了模型

25210

在模型上,您不必按照标准进行操作。 并提及加入...

public function activityFees()
  {
        $this->load->model('Fees_model');
        $data['activityfeeslist'] = $this->Fees_model->activityFessList();
        $this->load->view('fees/activityFees',$data);
  }

查看时

您的情况正在制造错误。而不是写条件...写成..

    public function activityFessList(){
            $getDetails = array('tbl_activityFees2.is_feesActive'=>1);
            $result = $this->db->select("*")
                               ->from('tbl_activityFees2')
    ->where($getDetails)
->join('activity_name','activity_name.activity_name_id=tbl_activityFees2.activity_name_id','left')
                                  ->get()
                                  ->result();
        if($result)
            {
               return $result;  
            }
            else 
            {
               return 0;    
            }
            }