【问题标题】:how to join tables correctly in codeigniter如何在codeigniter中正确连接表
【发布时间】:2023-03-10 04:02:01
【问题描述】:

这是我的模型

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

这是错误

error

这是我的控制器报告

公共函数报告() { $this->load->library('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);
      }

【问题讨论】:

标签: codeigniter jointable


【解决方案1】:

加入:

$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

【讨论】:

    【解决方案2】:

    t_detail_order 中的 id_order 更改为 varchar(15) 。清除所有数据,然后重试

    【讨论】:

      【解决方案3】:

      试试这个肯定会对你有所帮助:-

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

      【讨论】:

      • 把表格发给我,我会给你准确的查询
      【解决方案4】:

      我不会使用查询生成器,而是使用这个。

      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() 的返回不是 FALSE,如果查询失败,它将是。然后在控制器中

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-23
        • 2011-08-25
        • 2020-02-03
        • 1970-01-01
        • 2021-07-19
        相关资源
        最近更新 更多