如何用一个保存创建多个foreach?

时间:2017-11-14 04:56:14

标签: php arrays foreach yii multiple-columns

我在控制器功能框架中创建了多个foreach yii并创建了一个存储,但是数据只存储了最后的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 个答案:

答案 0 :(得分:2)

每次使用$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();
}