Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which join is suitable for my Ajax data table in CI

I have two tables one is 'sales' and another is 'deliveries'. I have a report which shows all 'sales'. I want to do a join where i can get all sales which are not delivered comparing to the deliveries table, only where the ID is the only key point. Although I am new developer for CI, i want to know how to do it.

Below is the code returning values in the grid.

function getdatatableajax()
   {
        if($this->input->get('search_term')) { $search_term = $this->input->get('search_term'); } else { $search_term = false;}

       $this->load->library('datatables');
       $this->datatables
            ->select("sales.id as sid, date, reference_no, biller_name, customer_name, total_tax, total_tax2, total, internal_note")
            ->select("sales.id = deliveries.id as sid date, reference_no, biller_name, customer_name, total_tax, total_tax2, total, internal_note")
            ->from('sales');
            $this->datatables->add_column("Actions", 
            "<center><a href='#' title='$2' class='tip' data-html='true'><i class='icon-folder-close'></i></a> <a href='#' onClick=\"MyWindow=window.open('index.php?module=sales&view=view_invoice&id=$1', 'MyWindow','toolbar=0,location=0,directories=0,status=0,menubar=yes,scrollbars=yes,resizable=yes,width=1000,height=600'); return false;\" title='".$this->lang->line("view_invoice")."' class='tip'><i class='icon-fullscreen'></i></a> 
            <a href='index.php?module=sales&view=add_delivery&id=$1' title='".$this->lang->line("add_delivery_order")."' class='tip'><i class='icon-road'></i></a>
            <a href='index.php?module=sales&view=pdf&id=$1' title='".$this->lang->line("download_pdf")."' class='tip'><i class='icon-file'></i></a> 
            <a href='index.php?module=sales&view=email_invoice&id=$1' title='".$this->lang->line("email_invoice")."' class='tip'><i class='icon-envelope'></i></a>
            </center>", "sid, internal_note")

        ->unset_column('sid')
        ->unset_column('internal_note');

       echo $this->datatables->generate();

   }

The Deliveries tables has below fileds

id date time reference_no customer address note user updated_by

I just want the alerted code where it will works ny just doing joins, if applicable.

like image 237
Debabrat Pradhan Avatar asked Oct 12 '15 23:10

Debabrat Pradhan


2 Answers

Try this code, its should work.

function getdatatableajax()
   {
        if($this->input->get('search_term')) { $search_term = $this->input->get('search_term'); } else { $search_term = false;}

       $this->load->library('datatables');
       $this->datatables
            ->select("sales.id as sid, sales.date as date, sales.reference_no as reference_no, sales.biller_name as biller_name, sales.customer_name as customer_name, sales.total_tax as total_tax, sales.total_tax2 as total_tax2, sales.total as total, internal_note as sintnote")
            ->from('sales')
            ->join(deliveries, 'sales.reference_no = deliveries.reference_no', 'left');
            $this->datatables->add_column("Actions", 
            "<center><a href='#' title='$2' class='tip' data-html='true'><i class='icon-folder-close'></i></a> <a href='#' onClick=\"MyWindow=window.open('index.php?module=sales&view=view_invoice&id=$1', 'MyWindow','toolbar=0,location=0,directories=0,status=0,menubar=yes,scrollbars=yes,resizable=yes,width=1000,height=600'); return false;\" title='".$this->lang->line("view_invoice")."' class='tip'><i class='icon-fullscreen'></i></a> 
            <a href='index.php?module=sales&view=add_delivery&id=$1' title='".$this->lang->line("add_delivery_order")."' class='tip'><i class='icon-road'></i></a>
            <a href='index.php?module=sales&view=pdf&id=$1' title='".$this->lang->line("download_pdf")."' class='tip'><i class='icon-file'></i></a> 
            <a href='index.php?module=sales&view=email_invoice&id=$1' title='".$this->lang->line("email_invoice")."' class='tip'><i class='icon-envelope'></i></a>
            </center>", "sid, internal_note")

        ->unset_column('sid')
        ->unset_column('internal_note');
       echo $this->datatables->generate();

   }
like image 80
Sashi Avatar answered Nov 15 '22 16:11

Sashi


The Ref Number is the Invoice number compare to the Sales table in generally. So try this code below and may it will furnish what you really want to populate from the DB.

   function getdatatableajax()
   {
        if($this->input->get('search_term')) { $search_term = $this->input->get('search_term'); } else { $search_term = false;}

       $this->load->library('datatables');
       $this->datatables
            ->select("sales.id as sid, date, reference_no, biller_name, customer_name, total_tax, total_tax2, total, internal_note")
            ->from('sales')
            ->join(deliveries, 'sales.reference_no = deliveries.reference_no', 'left');


            $this->datatables->add_column("Actions", 
            "<center><a href='#' title='$2' class='tip' data-html='true'><i class='icon-folder-close'></i></a> <a href='#' onClick=\"MyWindow=window.open('index.php?module=sales&view=view_invoice&id=$1', 'MyWindow','toolbar=0,location=0,directories=0,status=0,menubar=yes,scrollbars=yes,resizable=yes,width=1000,height=600'); return false;\" title='".$this->lang->line("view_invoice")."' class='tip'><i class='icon-fullscreen'></i></a> 
            <a href='index.php?module=sales&view=add_delivery&id=$1' title='".$this->lang->line("add_delivery_order")."' class='tip'><i class='icon-road'></i></a>
            <a href='index.php?module=sales&view=pdf&id=$1' title='".$this->lang->line("download_pdf")."' class='tip'><i class='icon-file'></i></a> 
            <a href='index.php?module=sales&view=email_invoice&id=$1' title='".$this->lang->line("email_invoice")."' class='tip'><i class='icon-envelope'></i></a>

            </center>", "sid, internal_note")

        ->unset_column('sid')
        ->unset_column('internal_note');

       echo $this->datatables->generate();

   }
like image 36
Anita Avatar answered Nov 15 '22 14:11

Anita