Codeigniter передает данные из одной таблицы в другую, используя цикл for - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь переместить данные из одной таблицы в другую в моей модели. В первых двух строках я получаю все строки в моей таблице «cart», которые соответствуют имени пользователя. Сейчас я пытаюсь перебрать все это и сопоставить идентификатор продукта с идентификатором продукта в моей таблице «продукт». Затем я пытаюсь отформатировать данные в соответствии с моей новой таблицей под названием «продано». Однако я получаю ошибку. Я думаю, что синтаксис $ q-> id, $ q-> product_name et c неправильный. Я знаю, что вы обычно можете использовать это в представлении, но это не работает в модели. Знаете ли вы, какой правильный синтаксис будет для этого?

 function checkout($username){
    $this->db->where('username', $username);
    $query = $this->db->get('cart');
    //$data = array();

    foreach ($query as $q){
        $product = $this->db->get_where('product', array('id' => $q->id));
        $arr['product_id'] = $product->id;
        $arr['product_brand'] = $product->item_brand;
        $arr['product_name'] = $product->item_name;
        $arr['product_image'] = $product->item_image_url;
        $arr['product_price'] = $product->item_price;
        $arr['product_size'] = $product->item_size;
        $arr['name_of_seller'] = $product->name_of_lister;
        $arr['name_of_buyer'] = $this->session->userdata('username');

        $this->db->insert('sold', $arr);
    }
    //Deletes the items out of the cart
   // $this->db->delete('cart');
}

Это сообщение об ошибке, которое я получаю

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 мая 2020
function checkout($username){
$this->db->where('username', $username);
$query = $this->db->get('cart');

if ($query->num_rows()>0) {
    $qdata = $query->result_array();

    foreach ($qdata as $key => $qdvalue) {
        $this->db->where('id', $qdvalue['id']);
        $product = $this->db->get('product');
        $pdata = $product->row_array()
        $inarray = array(
            'product_id'        =>      $pdata['id'],
            'product_brand'     =>      $pdata['item_brand'],
            'product_name'      =>      $pdata['item_name'],
            'product_image'     =>      $pdata['item_image_url'],
            'product_price'     =>      $pdata['item_price'],
            'product_size'      =>      $pdata['item_size'],
            'name_of_seller'    =>      $pdata['name_of_lister'],
            'name_of_buyer'     =>      $this->session->userdata('username')
        );

        $this->db->insert('sold', $inarray);
    }//end of foreach
}//end of if query
}//end of checkout function

Я переписываю вашу функцию, если все значения столбцов правильные, тогда она будет работать. И я предлагаю вам использовать транзакции для этого типа событий БД.

0 голосов
/ 04 мая 2020

Вы должны использовать result(), чтобы получить данные в переменной $query.

$query = $this->db->get('cart')->result();

Таким же образом также измените второй запрос.

$product = $this->db->get_where('product', array('id' => $q->id))->result();

Посмотрите, поможет ли это вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...