Satrya Cahya
Satrya Cahya

Reputation: 23

how to create multiple foreach with one save?

I create multiple foreach in the controller function framework yii and create one storage, but the data stored only the last foreach data, how the solution master?

$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();
}

thanks for the attention.

Upvotes: 1

Views: 319

Answers (1)

Anjana
Anjana

Reputation: 462

Each time you use $arrItems[] = $tabdata; you are replacing the $arrItems[] array with the new values in $tabdata.

You should use array_push($arrItems, $tabdata); instead.

So that your code should look like:

$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();
}

UPDATED:

You could try this:

$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();
}

Upvotes: 2

Related Questions