2016-12-16 6 views
0

У меня есть запрос sql в контроллере, этот запрос производит количество строк.codeigniter получить данные массива в контроллере

$q1 = $this->db->query("SELECT product_code,product_quantity FROM tbl_order_details WHERE order_id='$order_no' AND location='$location'")->row(); 

       foreach($q1 as $v_barcode){ 
       $result = $this->settings_model->update_cancel_stock($v_barcode->product_code,$v_barcode->product_quantity); 
       } 

тогда я не передать эти данные в моей модели,

public function update_cancel_stock($code,$qty) 
    { 

     $this->db->set('product_quantity', $qty , FALSE); 
     $this->db->where('product_id', $order); 
     $this->db->update("tbl_inventory6");     

    } 

, но не любое обновление. проверьте выше код. thanx

ответ

0

Вы используете функцию активной записи row(). Он уже возвращает только одну строку. Таким образом, нет необходимости в foreach. Попробуйте это:

$q1 = $this->db->query("SELECT product_code,product_quantity FROM tbl_order_details WHERE order_id='$order_no' AND location='$location'")->row(); 

$result = $this->settings_model->update_cancel_stock($q1->product_code,$q1->product_quantity); 

Если вы получаете несколько записей, и вы используете foreach, вы должны использовать result().

$q1 = $this->db->query("SELECT product_code,product_quantity FROM tbl_order_details WHERE order_id='$order_no' AND location='$location'")->result(); 

foreach($q1 as $v_barcode){ 
    $result = $this->settings_model->update_cancel_stock($v_barcode->product_code,$v_barcode->product_quantity); 
} 
+0

К сожалению Акшай Пракаш, я удалил - строка>(); проверяется с помощью foreach, все еще не работает. $ q1 = $ this-> db-> query ("SELECT product_code, product_quantity FROM tbl_order_details WHERE order_id = '$ order_no' AND location = '$ location'"); \t \t \t Еогеасп ($ q1, как $ v_barcode) {$ результат = $ этом-> settings_model-> update_cancel_stock ($ v_barcode-> код_продукта, $ v_barcode-> product_quantity); \t \t \t \t} –

+0

НЕТ, я не имел в виду это. Если вы удалите 'row()', вы не сможете получить записи. Codeigniter предоставляет две функции - 'row()' и 'result()'. 'row()' используется, когда вы получаете только строку из вашего запроса. 'result()' используется, когда вы получаете более одной строки. Таким образом, без 'row()', код будет моим обновленным ответом. –

0

Тест

$cond = array("order_id" => $order_no, "location" => $location); 
$q1 = $this->db->select("product_code,product_quantity")->from("tbl_order_details")->where($cond)->row(); 

$result = $this->settings_model->update_cancel_stock($q1->product_code,$q1->product_quantity); 

, а затем модель ($code не использовался)

public function update_cancel_stock($code,$qty){ 
    $this->db->set('product_quantity', $qty , FALSE); 
    $this->db->where('product_id', $code); 
    $this->db->update('tbl_inventory6');     
} 
Смежные вопросы