Reputation: 23
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
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