2012-06-09 4 views
1

У меня есть 500 записей в моем db. В моем бэкенде у меня есть действие. Например:Symfony 1.4 улучшает метод доктрины save()

public function executeMyAction(sfWebRequest $request) { 

// Get some data from table 
$templates = Doctrine_Core::getTable('SeoTemplates')->findOneByEntity('training'); 

//Get data from other table(500 items) 
$trainings = Doctrine::getTable('Training')->getTraining(); 

    // Make some operations with data 
    foreach ($trainings as $training) { 

     $training->setSomeValue1('some_data'); 
     $training->setSomeValue2('some_data'); 
     $training->setSomeValue2('some_data'); 

    } 

// Problem part (try to save) 
$trainings->save(); 
} 

save() выполнено в течение длительного времени. Как решить эту проблему? Является ли это возможным?

В моей проблемной части я все известная ошибка Фатальная ошибка: Максимальное время выполнения 30 секунд превышен в

ответ

3

Сохранить каждую запись вместо коллекции

$templates = Doctrine_Core::getTable('SeoTemplates')->findOneByEntity('training'); 
$trainings = Doctrine::getTable('Training')->getTraining(); 
foreach ($trainings as $training) { 
    $training->setSomeValue1('some_data'); 
    $training->setSomeValue2('some_data'); 
    $training->setSomeValue2('some_data'); 
    $training->save(); 
} 

или использовать Doctrine для обновления записи с использованием запроса

$q = Doctrine_Query::create() 
    ->update('TABLE') 
    ->set($val1, '?', $val1) 
    ->set($val2, '?', $val2) 
    ->set($val3, '?', $val3) 
    ->where('id = ?', $id) 
    ->execute(); 
+0

Спасибо! Второй путь быстрый :-) – denys281

Смежные вопросы