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

Propel one save call instead of one for each row

有没有一种方法可以发出一个 INSERT 语句而不是对每个对象调用 save() 方法?我可以在 PropelObjectCollection 上调用 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() 一次,使用 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();