2017-04-26 11 views
5

में दो तालिकाओं से डेटा कैसे प्राप्त कर सकता हूं मैं कोडिनेटर फ्रेमवर्क का उपयोग करके विकसित हार्डवेयर की दुकान के लिए बिक्री के बिंदु पर काम कर रहा हूं।मैं माइस्क्ल और कोडिग्निटर

मैं नीचे

enter image description here

मैं दो तालिकाओं जो बिक्री और भुगतान हैं तस्वीर में की तरह खाते का विस्तृत विवरण के साथ आना चाहते हैं, मैं इस दो तालिका से डेटा प्राप्त करना चाहते हैं तो यह है कि मैं एक विशिष्ट ग्राहक के खाते का बयान उत्पन्न कर सकता हूं।

इससे मदद मिलेगी क्योंकि ग्राहक नकद आधार या क्रेडिट आधार पर खरीदे गए सभी आइटम देख सकते हैं और यह भी दिखा सकते हैं कि उन्होंने तिथि के अनुसार समूहित किया है।

देय राशि की गणना करना भी संभव होगा।

मैं नीचे दिए गए कोड का उपयोग करके अलग से (बिक्री और भुगतान) सूचीबद्ध करने में सक्षम हो सकता हूं और इस प्रकार देय राशि की गणना कर सकता हूं।

बिक्री

<?php 
 
$salestotal = 0; 
 
if (is_array($sales) || is_object($sales)) 
 
{ 
 
foreach ($sales as $key=>$sale): {?> 
 
    <tr> 
 
    <td> 
 
     <?php echo $sale->date; ?> 
 
    </td> 
 
    <td> 
 
     <?php echo $sale->id; ?> 
 
    </td> 
 
    <td> 
 
     <?php echo $sale->grand_total; ?> 
 
    </td> 
 
    <td> 
 
     <?php echo $sale->paid; ?> 
 
    </td> 
 
    <td></td> 
 
    </tr> 
 
<?php 
 
if(isset($sale->grand_total)) 
 
$salestotal += $sale->grand_total; 
 
} endforeach ; }?>

भुगतान

<?php 
 
$paymentstotal = 0; 
 
if (is_array($payments) || is_object($payments)) 
 
{ 
 
foreach ($payments as $key=>$payment): {?> 
 
    <tr> 
 
    <td> 
 
     <?php echo $payment->date; ?> 
 
    </td> 
 
    <td class="text-center"> 
 
     <?php echo $payment->sale_id; ?> 
 
    </td> 
 
    <td class="text-center"> 
 
     <?php echo $payment->paid_by; ?> 
 
    </td> 
 
    <td class="text-center"> 
 
     <?php echo $payment->cheque_no; ?> 
 
    </td> 
 
    <td class="text-center"> 
 
     <?php echo $payment->amount; ?> 
 
    </td> 
 
    <td class="text-center"> 
 
     <?php echo $this->customers_model->getUserna($payment->created_by); ?> 
 
    </td> 
 
    <td class="text-center"> 
 
     <?php echo $payment->pos_paid; ?> 
 
    </td> 
 
    <td class="text-center"> 
 
     <?php echo $payment->pos_balance; ?> 
 
    </td> 
 
    <td class="text-right"> 
 
     <?php echo $this->customers_model->getStorename($payment->store_id); ?> 
 
    </td> 
 
    </tr> 
 
    <?php 
 
    if(isset($payment->amount)) 
 
    $paymentstotal += $payment->amount; 
 
} endforeach ;}?>

मेरे नियंत्रक

function statement($id = NULL) 
 
    { 
 
     if (!$this->Admin) { 
 
      $this->session->set_flashdata('error', $this->lang->line('access_denied')); 
 
      redirect('pos'); 
 
     } 
 
     if($this->input->get('id')) { $id = $this->input->get('id', TRUE); } 
 
     $this->data['sales'] = $this->customers_model->getSales($id); 
 
     $this->data['payments'] = $this->customers_model->getPayments($id); 
 
     $this->data['customer'] = $this->customers_model->getCustomername($id); 
 
     $this->data['customer_id'] = $id; 
 
     $this->page_cons('customers/statement', $this->data);   
 
    }

मेरे मॉडल

public function getSales($id) 
 
    { 
 
     $q = $this->db->get_where('sales', array('customer_id' => $id)); 
 

 
     if($q->num_rows() > 0) { 
 
      return $q->result(); 
 
     } 
 
     return FALSE; 
 
    } 
 

 
    public function getPayments($id) 
 
    { 
 
     $q = $this->db->get_where('payments', array('customer_id' => $id)); 
 

 
     if($q->num_rows() > 0) { 
 
      return $q->result(); 
 
     } 
 
     return FALSE; 
 
    }

मैं इस दो तालिकाओं गठबंधन करते हैं?

मुझे आशा है कि मैं इस प्रश्न पर पर्याप्त स्पष्ट हूं, मैं Google की कोशिश कर रहा हूं लेकिन मुझे कोई भाग्य नहीं है।

मैं किसी भी मदद की सराहना करता हूं। धन्यवाद

संपादित

MySQL टेबल

बिक्री enter image description here

भुगतान

enter image description here

+0

अद्यतन सवाल। –

+0

@TouheedKhan, मैंने MySQL तालिका – kikuyu1

उत्तर

1

आप दिए गए तरीकों getSales() और getPayments() एक नई पद्धति getSalesWithPayments() में दो परिणाम गठबंधन करने के लिए पुनः उपयोग कर सकते मामला कि बिक्री के पास अभी तक कोई भुगतान नहीं है) और $sales सरणी को पॉप्युलेट करें, जिसे id कॉलम द्वारा अनुक्रमित किया गया है। इस तरह आप बिना किसी महंगी खोज के अपने आईडी द्वारा किसी भी बिक्री तक आसानी से पहुंच सकते हैं।

दूसरे लूप में आप संबंधित बिक्री को भुगतान असाइन करते हैं।

ध्यान दें कि आपको रिक्त परिणामों को संभालने के लिए तर्क जोड़ने की आवश्यकता हो सकती है (यदि आवश्यक नहीं होगा तो आप FALSE के बजाय एक खाली सरणी वापस कर देंगे)।

.. अब आप की तरह उपयोग कर सकते हैं

नियंत्रक:

$this->data['sales'] = $this->customers_model->getSalesWithPayments($id); 

दृश्य: `sales` anb` payments` तालिका की संरचना के साथ

<?php foreach ($sales as $sale): ?> 
    <tr> 
    <td><?php echo $sale->date; ?></td> 
    <td><?php echo $sale->id; ?></td> 
    ... 
    <?php if($sale->payment !== null): ?> 
     <td><?php echo $sale->payment->date; ?></td> 
     <td><?php echo $sale->payment->amount; ?></td> 
     ... 
    <?php else: // empty cells if no payment ?> 
     <td></td> 
     <td></td> 
     ... 
    <?php endif; ?> 
    </tr> 
<?php endforeach; ?> 
+0

के साथ अपना प्रश्न अपडेट किया है आपकी मदद के लिए बहुत बहुत धन्यवाद – kikuyu1

0

आप पोस्ट करते हैं sales और payments तालिका जवाब बेहतर और सटीक होगा। आप 2 टेबल से संयुक्त डेटा प्राप्त करने के लिए MySQL शामिल हो सकते हैं।

0

इस प्रयास करें: पहले पाश आप प्रारंभ $sale->payment में

public function getSalesWithPayments($customerId) { 
    $sales = []; 
    foreach ($this->getSales($customerId) as $sale) { 
     $sale->payment = null; 
     $sales[$sale->id] = $sale; 
    } 
    foreach ($this->getPayments($customerId) as $payment) { 
     $sales[$payment->sale_id]->payment = $payment; 
    } 
    return $sales; 
} 

(के लिए:

$this->db->select('*') 
      ->from('sales') 
      ->join('payments', 'payments.sales_id = sales.id', 'right') 
      ->where(array('sales.customer_id' => $id)); 
$results = $this->db->get(); 
संबंधित मुद्दे