推动一个保存调用而不是每行一个

时间:2015-03-09 14:22:20

标签: symfony propel

有没有办法发出一个INSERT语句而不是在每个对象上调用save()方法?我可以在PropelObjectCollection上调用save()吗?

有没有办法可以调用一个save语句并保存一整行而不是每行调用一次?

为了说明,我目前有这段代码:

    while($node = $streamer->getNode())
    {
        $profile = simplexml_load_string($node);

        $profileHandler = new Profile();
        $profileHandler->setBlob($profileXml);
        $profileHandler->setUserId($userId);
        $profileHandler->setHome($profile->home);
        $profileHandler->setJob($profile->job);
        $profileHandler->setTown($profile->town);
        $profileHandler->setUpdatedat($profile['updated']);
        $profileHandler->save();
    }

我可以在while循环结束时调用一个save方法吗?或者这是唯一的方法吗?

1 个答案:

答案 0 :(得分:1)

可以使用Save()拨打PropelObjectCollection一次,试试这个:

$tempArray = [];
while($node = $streamer->getNode())
{
    $profile = simplexml_load_string($node);

    $tempArray[] = [
        'Blob'      => $profileXml,
        'UserId'    => $userId,
        'Home'      => $profile->home,
        'Job'       => $profile->job,
        'Town'      => $profile->town,
        'Updatedat' => $profile['updated']
    ];
}

$oCollection = new PropelObjectCollection();
$oCollection->setModel('Profile');
$oCollection->fromArray($tempArray);
$oCollection->save();