Не получен ожидаемый результат от модельного запроса. Какой запрос я должен использовать? - PullRequest
0 голосов
/ 05 января 2019

Я использую 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 голосов
/ 07 января 2019

если вы получаете строки в цикле при просмотре ... тогда просто измените представление

Ваш контроллер ActivityFees правильный .. если вы загрузили модель из конструктора, то еще

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;    
            }
            }

при взгляде

ваше состояние создает ошибку ... вместо написания условия ... напишите как ..

<?php  if($activityfeeslist)
        {
            $n = 1;
            foreach ($activityfeeslist as $rows) { ?>
              <tr>
                <td><?php echo $n++;?></td>
                <td><?php echo $rows->m_id;?></td>

                <td><?php echo $rows->Duration;?></td>
                <td><?php echo $rows->primary;?></td>

                <td><?php echo $rows->Duration;?></td>
                <td><?php echo $rows->secondary;?></td>
             </tr>
        <?php } } ?>
0 голосов
/ 07 января 2019

Да, в запросе модели есть ошибка, как и в вашем представлении. В связи с тем, что вы выполняете итерации и выполняете операции 12 и 6 метров, вместо того, чтобы делать это по вашему мнению, вы должны использовать запрос примерно так:

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

Я присоединился к одной таблице два раза, чтобы получить результат непосредственно из запроса. Систакс, я немного ошибаюсь, но я надеюсь, что вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...