【问题标题】:I want to convert this query in codeigniter to Ignited datatable query我想将 codeigniter 中的这个查询转换为 Ignated 数据表查询
【发布时间】:2023-03-14 04:51:02
【问题描述】:

我不知道如何将这个长模型函数转换为点燃的数据表查询。我已经用点燃的数据表完成了小的选择功能。有人知道吗???
我不知道如何隐藏它。有什么功能可以做到吗?

   public function fetch_data() {

              $this->db->from('jil_requirements');
              $this->db->join('jil_users', 'jil_requirements.rqm_userid=jil_users.usr_id', 'left');
              $this->db->join('jil_merchants', 'jil_requirements.rqm_createdempid=jil_merchants.mer_id', 'left');
              $this->db->where('jil_requirements.rqm_permission!=', '4');
              $this->db->order_by("jil_requirements.rqm_id", "desc");
              $query =  $this->db->get();  
              if ($query->num_rows() > 0) {
              foreach ($query->result() as $row) {
                 $this->db->select('count(jil_mrorfq.rfq_requirementid) as total'); 
                $this->db->from('jil_mrorfq'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id=jil_mrorfq.rfq_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query2= $this->db->get()->row_object();
                 $row->total_count = $query2->total;    
                  $this->db->select('count(jil_quotemjdetail.qud_requirementid) as quotemjtotal'); 
                $this->db->from('jil_quotemjdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id=jil_quotemjdetail.qud_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query3= $this->db->get()->row_object();
                  $row->quotemj_total = $query3->quotemjtotal;

                   $this->db->select('count(jil_quotejcdetail.qud_requirementid) as quotejctotal'); 
                $this->db->from('jil_quotejcdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_quotejcdetail.qud_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query4= $this->db->get()->row_object();
                  $row->quotejc_total = $query4->quotejctotal;

                    $this->db->select('count( jil_pocjdetail.pocd_requirementid) as pocjtotal'); 
                $this->db->from('jil_pocjdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id=  jil_pocjdetail.pocd_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query5= $this->db->get()->row_object();
                  $row->pocj_total = $query5->pocjtotal;

                   $this->db->select('count(jil_pojmdetail.pojd_requirementid) as pojmtotal'); 
                $this->db->from('jil_pojmdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id=  jil_pojmdetail.pojd_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query6= $this->db->get()->row_object();
                  $row->pojm_total = $query6->pojmtotal;


                 $data[] = $row;
                        }
                       return $data;
                    }
                    return false;
               }

【问题讨论】:

标签: codeigniter datatable codeigniter-2 codeigniter-3


【解决方案1】:
 $this->db->select('count(jil_quotemjdetail.qud_requirementid) as quotemjtotal'); 
                $this->db->from('jil_quotemjdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id=jil_quotemjdetail.qud_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query3= $this->db->get()->row_object();
                  $row->quotemj_total = $query3->quotemjtotal;

                   $this->db->select('count(jil_quotejcdetail.qud_requirementid) as quotejctotal'); 
                $this->db->from('jil_quotejcdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_quotejcdetail.qud_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query4= $this->db->get()->row_object();
                  $row->quotejc_total = $query4->quotejctotal;

                    $this->db->select('count( jil_pocjdetail.pocd_requirementid) as pocjtotal'); 
                $this->db->from('jil_pocjdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id=  jil_pocjdetail.pocd_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query5= $this->db->get()->row_object();
                  $row->pocj_total = $query5->pocjtotal;

                   $this->db->select('count(jil_pojmdetail.pojd_requirementid) as pojmtotal'); 
                $this->db->from('jil_pojmdetail'); 
               $this->db->join('jil_requirements', 'jil_requirements.rqm_id=  jil_pojmdetail.pojd_requirementid', 'left'); 
               $this->db->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query6= $this->db->get()->row_object();
                  $row->pojm_total = $query6->pojmtotal;


                 $data[] = $row;
                        }
                       return $data;
                    }
                    return false;
               }

【讨论】:

    【解决方案2】:

    首先你必须加载被点燃的dataTables库。

        $this->load->library('datatables');
    

    将其添加到 Autoloader 以便在您的 Codeigniter 应用程序启动时自动加载。

    之后,全部更改

          $this->db->
    

    在您的查询中

         $this->datatables
    

    最后你必须使用它来编码 json 数组中的数据

          $this->datatables->generate();
    

    让我知道我是否还能帮上忙

    更新

    public function fetch_data() {
    
              $this->datatables->from('jil_requirements');
              $this->datatables->join('jil_users',         'jil_requirements.rqm_userid=jil_users.usr_id', 'left');
              $this->datatables->join('jil_merchants', 'jil_requirements.rqm_createdempid=jil_merchants.mer_id', 'left');
              $this->datatables->where('jil_requirements.rqm_permission!=', '4');
              $this->datatables->order_by("jil_requirements.rqm_id", "desc");
              $query =  $this->datatables->get();  
    
             if ($query->num_rows() > 0) {
    
              foreach ($query->result() as $row) {
                 $this->datatables->select('count(jil_mrorfq.rfq_requirementid) as total'); 
                $this->datatables->from('jil_mrorfq'); 
               $this->datatables->join('jil_requirements', 'jil_requirements.rqm_id=jil_mrorfq.rfq_requirementid', 'left'); 
               $this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query2= $this->datatables->get()->row_object();
                 $row->total_count = $query2->total;    
                  $this->datatables->select('count(jil_quotemjdetail.qud_requirementid) as quotemjtotal'); 
                $this->datatables->from('jil_quotemjdetail'); 
               $this->datatables->join('jil_requirements', 'jil_requirements.rqm_id=jil_quotemjdetail.qud_requirementid', 'left'); 
               $this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query3= $this->datatables->get()->row_object();
                  $row->quotemj_total = $query3->quotemjtotal;
    
                   $this->datatables->select('count(jil_quotejcdetail.qud_requirementid) as quotejctotal'); 
                $this->datatables->from('jil_quotejcdetail'); 
               $this->datatables->join('jil_requirements', 'jil_requirements.rqm_id= jil_quotejcdetail.qud_requirementid', 'left'); 
               $this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query4= $this->datatables->get()->row_object();
                  $row->quotejc_total = $query4->quotejctotal;
    
                    $this->datatables->select('count( jil_pocjdetail.pocd_requirementid) as pocjtotal'); 
                $this->datatables->from('jil_pocjdetail'); 
               $this->datatables->join('jil_requirements', 'jil_requirements.rqm_id=  jil_pocjdetail.pocd_requirementid', 'left'); 
               $this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query5= $this->datatables->get()->row_object();
                  $row->pocj_total = $query5->pocjtotal;
    
                   $this->datatables->select('count(jil_pojmdetail.pojd_requirementid) as pojmtotal'); 
                $this->datatables->from('jil_pojmdetail'); 
               $this->datatables->join('jil_requirements', 'jil_requirements.rqm_id=  jil_pojmdetail.pojd_requirementid', 'left'); 
               $this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
                  $query6= $this->datatables->get()->row_object();
                  $row->pojm_total = $query6->pojmtotal;
    
                   echo $this->datatables->generate();
    
               }
    

    【讨论】:

    • 你确定吗?关于这个?
    • 我不明白你想通过所有这些查询一起实现什么。
    • 你能解释一下......所以,我可以帮忙......我理解每个单独的表查询,但你为什么要把所有这些放在一起。
    • 内部查询取决于该 foreach 结果
    【解决方案3】:

    在你的控制器中使用它,看看它是否工作

    public function fetch_data() 
    { 
     $this->load->library("datatables");
     $query =  $this->datatables
            ->select('jil_requirements.*,count(jil_mrorfq.rfq_requirementid) as total,count(jil_quotemjdetail.qud_requirementid) as quotemjtotal,count(jil_quotejcdetail.qud_requirementid) as quotejctotal,count( jil_pocjdetail.pocd_requirementid) as pocjtotal,count(jil_pojmdetail.pojd_requirementid) as pojmtotal')
            ->from('jil_requirements')
            ->join('jil_users', 'jil_requirements.rqm_userid=jil_users.usr_id', 'left')
            ->join('jil_merchants', 'jil_requirements.rqm_createdempid=jil_merchants.mer_id', 'left')
            ->join('jil_mrorfq', 'jil_mrorfq.rfq_requirementid = jil_requirements.rqm_id', 'left')
            ->join('jil_quotemjdetail', 'jil_quotemjdetail.qud_requirementid = jil_requirements.rqm_id', 'left')
            ->join('jil_pocjdetail', 'jil_pocjdetail.pocd_requirementid = jil_requirements.rqm_id', 'left')
            ->join('jil_pojmdetail', 'jil_pojmdetail.pojd_requirementid = jil_requirements.rqm_id', 'left')
            ->where('jil_requirements.rqm_permission!=', '4');  
        echo $this->datatables->generate();
    }
    

    【讨论】:

    • @Angel 现在检查仅用于测试目的,仅使用我更新的代码是否为您提供所需的输出?我正在研究你的复杂结构,先给它一个简单的外观,然后我们将其转换为 Ignited 数据表...... :)
    • 我在控制台中遇到了一些错误,例如未定义的函数 order_by() 等
    • @Angel Okk 然后删除 order by 并尝试... 点燃的数据表不支持 order_by 所以在你的 jquery 中使用它"aaSorting": [[1, "asc"]],
    • 2小时后有空吗?
    • 我会在晚上 7 点回来吗?如果你有时间,请到时候来
    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2019-04-24
    • 2019-11-03
    • 2017-05-29
    • 2011-01-25
    相关资源
    最近更新 更多