php - 在 CodeIgniter 中使用 foreach 更新表

标签 php mysql codeigniter

我有一个具有此功能的模型

function dummy_system(){
    $this->db->select('SKU, size, color')
             ->from('order_detail')
             ->where('order_id',"52F4CC00C32");

    $query = $this->db->get();

    // 2nd query
    foreach($query->result() as $row):
        $SKU = $row->SKU;
        $size = $row->size;
        $color = $row->color;

        $this->db->select('stock_quantity')
                 ->from('item_stock')
                 ->join('items','items.stock_id = item_stock.stock_id')
                 ->join('item','item.item_id = items.item_id')
                 ->where('item.SKU',$SKU)
                 ->where('item_stock.size',$size)
                 ->where('item_stock.colour',$color);

        $query = $this->db->get();
    endforeach;

    if($query->num_rows() > 0){
    return $query->result();
    }
    else{
        return array();
    }
}

这个 Controller

public function index()
{
    $this->load->model('nekogear');
    $data['dummy'] = $this->nekogear->dummy_system();

    echo "<pre>";
    die(print_r($data, TRUE));
}

这是仅显示最后一个查询的结果。

Array
(
    [dummy] => Array
        (
            [0] => stdClass Object
                (
                    [stock_quantity] => 5
                )

        )

)
<小时/>

我的问题是如何在模型中执行 foreach 循环以获取具有一个 order_id 的所有查询结果? (当前order_id有两行具有相同的order_id) 使用此代码(我需要在下一个查询中输入 SKU、尺寸和颜色值)

$this->db->select('SKU, size, color')
             ->from('order_detail')
             ->where('order_id',"52F4CC00C32");

    $query = $this->db->get();

    if($query->num_rows() > 0){
        return $query->result();
    }
    else{
        return array();
    }

它可以获取结果

Array
(
    [dummy] => Array
        (
            [0] => stdClass Object
                (
                    [SKU] => Nisekoi-01
                    [size] => L
                    [color] => Biru
                )

            [1] => stdClass Object
                (
                    [SKU] => Wooser-01
                    [size] => XL
                    [color] => Kuning
                )

        )

)
<小时/>

考虑到这一点,我认为问题出在我的模型内的 foreach 循环中,我不知道如何解决这个问题。

感谢您的宝贵时间,并对我的英语不好表示歉意。

最佳答案

您可以构建一个数组并循环遍历它来获取股票:

$this->db->select('SKU, size, color')
->from('order_detail')
->where('order_id',"52F4CC00C32");

$query = $this->db->get();
$skus = array();
foreach($query->result() as $row):
    $skus[$row->SKU] = array('sku' => $row->SKU, 'size' = $row->size, 'color' = $row->color);
endforeach;

$return = array();

foreach($skus as $sku => $data):
    $SKU = $data['sku'];
    $size = $data['size'];
    $color = $data['color'];

    // same query

    $return[] = $query->result();
endforeach:

return $return;

关于php - 在 CodeIgniter 中使用 foreach 更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636702/

相关文章:

php - crontab 不运行 php 命令

使用 AJAX 检索表单时,Javascript 表单提交 PreventDefault 不起作用

javascript - MySQLi + PHP - 获取字段的结果

java - Tomcat + Mysql - 无法找到 java :comp

mysql - 如何比较列和在表中计数

php - Composer : classes not autoloading with CodeIgniter 3 故障排除

PHPUnit : memcache_connect not working in PHPunit test case

php - Codeigniter - 模型 - 重复输入警报

php - Codeigniter - 让我的 Controller 更干

c# - 在Unity3d中连接MySql -> NullReferenceException : Object reference not set to an instance of an object