代码之家  ›  专栏  ›  技术社区  ›  SliceOfLife

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

  •  0
  • SliceOfLife  · 技术社区  · 9 年前

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

    是否有一种方法可以调用一条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 回复  |  直到 9 年前
        1
  •  1
  •   Qiniso    9 年前

    也许可以打电话 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();