как правильно соединять таблицы в codeigniter - PullRequest
0 голосов
/ 01 мая 2018

это мои модели

function report($where = '')
   {
      $this->db->select(array('o.id_order AS id_order', 'nama_pemesan', 'kota', 'total', 'SUM(biaya) AS do.biaya'));

      $this->db->from('t_order o JOIN t_detail_order do ON (o.id_order = do.id_order)');

      $this->db->where($where);
      $this->db->group_by('o.id_order');

      return $this->db->get();
   }

это мой стол t_order

t_order

это моя таблица t_detail_order

t_detail_order

это ошибка

ошибка

это мой отчет контроллера

отчет о публичных функциях () { $ This-> load-> библиотека ( 'form_validation'); $ This-> cek_login ();

          if ($this->input->post('submit', TRUE) == 'Submit')
          {
              $this->form_validation->set_rules('bln', 'Bulan', 'required|numeric');
              $this->form_validation->set_rules('thn', 'Tahun', 'required|numeric');

              if ($this->form_validation->run() == TRUE)
              {
                  $bln = $this->input->post('bln', TRUE);
                  $thn = $this->input->post('thn', TRUE);
              }

          } else {
              $bln = date('m');
              $thn = date('Y');
          }
          //YYYY-mm-dd
          //2017-04-31
          $awal  = $thn.'-'.$bln.'-01';
          $akhir = $thn.'-'.$bln.'-31';

          $where = ['tgl_pesan >=' => $awal, 'tgl_pesan <=' => $akhir, 'status_proses' => 'proses', 'selesai'];

          $data['data']   = $this->trans->report($where);
          $data['bln']    = $bln;
          $data['thn']    = $thn;

          $this->template->admin('admin/laporan', $data);
      }

Ответы [ 4 ]

0 голосов
/ 02 мая 2018

Попробуйте, это вам наверняка поможет: -

function report($where = ''){
      $this->db->select(array('o.id_order AS id_order', 'o.nama_pemesan','o.kota', 'o.total', 'SUM(do.biaya) AS biaya'));
      $this->db->from('t_order o');
      $this->db->join('t_detail_order do', 'o.id_order = do.id_order');
      $this->db->where($where);
      $this->db->group_by('o.id_order');
      return $this->db->get();
}
0 голосов
/ 02 мая 2018

Регистрация:

$this->db->join('t_detail_order do', 'o.id_order = do.id_order');

Результат:

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

Документы конструктора запросов CI: https://www.codeigniter.com/userguide3/database/query_builder.html

0 голосов
/ 02 мая 2018

Измените id_order в t_detail_order на varchar(15). Очистите все данные и повторите попытку

0 голосов
/ 01 мая 2018

Я бы не использовал Query Builder, но вместо этого.

function report($where = '')
{
    $sql = "SELECT o.id_order AS id_order, nama_pemesan, kota, total, 
            SUM(do.biaya) AS biaya
            FROM t_order o 
            JOIN t_detail_order AS do ON (o.id_order=do.id_order) WHERE ? 
            GROUP BY o.id_order";

    return $this->db->query($sql, $where)->get();
}

Убедитесь, что возвращаемое значение report() не равно ЛОЖЬ, как и в случае сбоя запроса. В контроллере тогда

$data - $this->model_name->report($some_value);
if($data)
{
   ... do stuff with data
}
else
{
   ... report on, or handle query failure
}
...