Как отобразить данные только один раз, используя две разные таблицы в codeigniter - PullRequest
0 голосов
/ 10 ноября 2018

Я готовлю регистрацию этого ввода от даты и до даты ... Это отображает записи, сделанные пользователем от даты и до даты ... Я хочу отобразить номер ваучера, billdate, qty, сумму (присутствует в счете на покупку таблица) и название продукта (присутствует в таблице покупки) я хочу напечатать название продукта в той же строке в соответствии с billno .. (Для этого я использую concat группы) ... Моя проблема заключается в том, что все данные отображаются несколько раз ..Я не знаю, где ошибка в моем коде .. Какие изменения нужно сделать в моем коде, чтобы отобразить данные только один раз ... Ниже я прикрепил свой код .. Помогите мне

Код контроллера:

$this->db->where('date >=', $newDate);
        $this->db->where('date <=', $newDate2);
        $this->db->select('*');
        $this->db->from('purchasebill');
        $this->db->order_by("voucherno", "asc");
        $this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
        $this->db->select('GROUP_CONCAT(Prdtname)as itemname',false);
        $this->db->order_by('vno','asc');
        $this->db->group_by('vno,billno');
    $this->db->from('purchaseitem');


    $query = $this->db->get('')->result_array();    
    $data ['query']= $query;

Посмотреть код:

  <?php $rowcount = 1 ?>                            
                                <?php foreach ($query as $row): ?>

                                        <tr>
                                            <td><?=$rowcount;?></td>
                                            <td><?=$row['voucherno'];?></td>
                                            <td><?=$row['date'];?></td>
                                            <td><?=$row['PName'];?></td>
                                            <td><?=$row['sqty'];?></td>
                                            <td><?=$row['billtot'];?></td>
                                            <td><?=$row['itemname'];?></td>
                                            <?php $rowcount +=1?>
                                            <br>
                                            <?php endforeach ?> 
                                        </tr>

Я думаю, что данные печатаются несколько раз, потому что я использовал два запроса, но передал одну и ту же переменную $ data. Есть ли возможность загрузить несколько результатов запроса на одну и ту же страницу представления. ???

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018
$this->db->where('date >=', $newDate);
    $this->db->where('date <=', $newDate2);
    $this->db->select('purchasebill.*,GROUP_CONCAT(parmaster.Prdtname)as itemname');
    $this->db->from('purchasebill');
    $this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
    $this->db->order_by('vno','asc');
    $this->db->group_by('vno,billno');


$query = $this->db->get()->result_array();    
$data ['query']= $query;
0 голосов
/ 10 ноября 2018

Да, вы можете выполнять различные запросы и передавать их по отдельности:

$this->db->select('*');
$this->db->from('purchasebill');
$this->db->where('date >=', $newDate);
$this->db->where('date <=', $newDate2);
$this->db->order_by("voucherno", "asc");
$this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
$query1 = $this->db->get()->result_array();

$this->db->select('GROUP_CONCAT(Prdtname) AS itemname',false);
$this->db->order_by('vno','asc');
$this->db->group_by('vno,billno');
$this->db->from('purchaseitem');
$query2 = $this->db->get()->result_array();  

$data['bills']= $query1;
$data['items']= $query2;

$this->load->view('your_view_path', $data);

Тогда, по вашему мнению, вы можете получить доступ к данным в $bills и $items. Я советую вам поиграть и создать только один запрос, который приносит всю вашу информацию.

...