代码之家  ›  专栏  ›  技术社区  ›  Satrya Cahya

如何通过一次保存创建多个foreach?

  •  1
  • Satrya Cahya  · 技术社区  · 8 年前

    我在控制器功能框架yii中创建了多个foreach并创建了一个存储,但数据只存储了最后一个foreach数据,如何掌握解决方案?

    $arrItems = array();
    $data = LineTransaksi::model()->findAllByAttributes(array('id_header'=>$id));
    foreach ($_POST['jml_kembali_bgs'] as $q3k => $q3v)
    {
        if(isset($data[$q3k]))
        {
            $tabdata=LineTransaksi::model()->findByPk($data[$q3k]->id_line);  
        }
        else
        {
            $tabdata=new LineTransaksi;
        }
        $tabdata->jml_kembali_bgs=$q3v;
        $arrItems[] = $tabdata;
    }
    foreach ($_POST['jml_kembali_retak'] as $q3r => $q3t)
    {
        if(isset($data[$q3r]))
        {
            $tabdata=LineTransaksi::model()->findByPk($data[$q3r]->id_line);  
        }
        else
        {
            $tabdata=new LineTransaksi;
        }
        $tabdata->jml_kembali_retak=$q3t;
        $tabdata->last_updated_date=new CDbExpression('now()');
        $arrItems[] = $tabdata;
    }
    foreach ($arrItems as $object)
    {
        $object->save();
    }
    

    谢谢你的关注。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Anjana    8 年前

    每次使用 $arrItems[] = $tabdata; 您正在用$tabdata中的新值替换$arrItems[]数组。

    array_push($arrItems, $tabdata); 相反

    因此,您的代码应该如下所示:

    $arrItems = array();
    foreach ($_POST['jml_kembali_bgs'] as $q3k => $q3v)
    {
    if(isset($data[$q3k]))
    {
        $tabdata=LineTransaksi::model()->findByPk($data[$q3k]->id_line);  
    }
    else
    {
        $tabdata=new LineTransaksi;
    }
    $tabdata->jml_kembali_bgs=$q3v;
    array_push($arrItems, $tabdata);
    }
    foreach ($_POST['jml_kembali_retak'] as $q3r => $q3t)
    {
    if(isset($data[$q3r]))
    {
        $tabdata=LineTransaksi::model()->findByPk($data[$q3r]->id_line);  
    }
    else
    {
        $tabdata=new LineTransaksi;
    }
    $tabdata->jml_kembali_retak=$q3t;
    $tabdata->last_updated_date=new CDbExpression('now()');
    array_push($arrItems, $tabdata);
    }
    foreach ($arrItems as $object)
    {
    $object->save();
    }
    

    更新日期:

    你可以试试这个:

    $arrItems = array();
    foreach ($_POST['jml_kembali_bgs'] as $q3k => $q3v)
    {
    if(isset($data[$q3k]))
    {
        $tabdata=LineTransaksi::model()->findByPk($data[$q3k]->id_line);  
    }
    else
    {
        $tabdata=new LineTransaksi;
    }
    $tabdata->jml_kembali_bgs=$q3v;
    array_push($arrItems, $tabdata);
    }
    foreach ($arrItems as $object)
    {
    $object->save();
    }
    foreach ($_POST['jml_kembali_retak'] as $q3r => $q3t)
    {
    if(isset($data[$q3r]))
    {
        $tabdata=LineTransaksi::model()->findByPk($data[$q3r]->id_line);  
    }
    else
    {
        $tabdata=new LineTransaksi;
    }
    $tabdata->jml_kembali_retak=$q3t;
    $tabdata->last_updated_date=new CDbExpression('now()');
    array_push($arrItems, $tabdata);
    }
    foreach ($arrItems as $object)
    {
    $object->save();
    }