Sorgu için CodeIgniter iyi senaryo akışı

0 Cevap php

Ben aşağıdaki verileri ettik:

promo_id    date    time    reg_cnt notes
2760    2010-06-02  01:30:00    2   -
2760    2010-06-02  05:30:00    2   -
2760    2010-06-03  07:00:00    1   -
2760    2010-06-03  07:30:00    2   -
2760    2010-06-03  08:30:00    3   -
2760    2010-06-04  09:00:00    1280    promo from vendor xxx
2760    2010-06-04  09:30:00    6   -
2760    2010-06-04  10:00:00    3   -
2760    2010-06-04  10:30:00    5434    TVC program xxx

Ben bu gibi gösterilir gerekir:

PROMO   DATE    REG CNT NOTES
2760    2010-06-02  4   -
2760    2010-06-03  6   -
2760    2010-06-04  6723    promo from vendor xxx, TVC program xxx

I can't figure it out the simple way to get these data. For now, I did something like this on my model:

$data = array();
$query = $this->db->query("SELECT promo_id, date, SUM(reg_cnt) AS reg_cnt FROM promo_signup");
foreach( $query->result_array() as $q ){
    $data[ $q['promo_id'] . '-' . $q['date'] ] = $q;
    $query2 = $this->db->query("SELECT notes FROM promo_signup WHERE date = '" . $q['date'] . "' AND promo_id = '" . $q['promo_id'] . "'");
    $data2 = array();
    foreach( $query2->result_array() as $q2 ){
        $data2[] = $q2['notes'];
    }
    $data[ $q['promo_id'] . '-' . $q['date'] ]['notes'] = $data2;
}

Sonra, ben hala onu görüntülemek için benim görünümünde $data döngü var.

Ben aşağıda koduna göre işlem gücü kaybıdır, (ben CI olmadan yaptım eğer) sanırım:

$data = array();
$query = $this->db->query("SELECT promo_id, date, SUM(reg_cnt) AS reg_cnt FROM promo_signup");
foreach( $query->result_array() as $q ){
    $data[ $q['promo_id'] . '-' . $q['date'] ] = $q;
    $query2 = $this->db->query("SELECT notes FROM promo_signup WHERE date = '" . $q['date'] . "' AND promo_id = '" . $q['promo_id'] . "'");
    $data2 = array();

    //echo data here

    foreach( $query2->result_array() as $q2 ){
        $data2[] = $q2['notes'];

        //echo notes data here

    }
}

Yani, CI bunu yapmanın daha iyi bir yolu var mı?

Sadece kavram kodu, çünkü siz, yukarıdaki kod üzerinde bazı hata bulursa üzgünüm.

0 Cevap