До тех пор, пока не надо выбирать сотни объектов, никаких проблем не будет.порядка сотни тысяч записей в таблицах,
наткнулся в рассылке по доктрине2 на проблему последовательной вставки 100 000 связанных записей:pilot911
а почему должна просесть именно из-за доктрины? это как раз нормальное место и даже на миллионе записей работает. (сам не видел, но знаю живых людей)
foreach( $countries as $country_key => $country_value )
{
$country = new Country();
$country->setIdOld( $country_key );
$country->setName( $country_value );
foreach( $provinces[ $country_key ] as $province_key => $province_value )
{
$province = new Province();
$province->setIdOld( $province_key );
$province->setName( $province_value );
foreach( $cities[ $province_key ] as $city_key => $city_value )
{
$city = new City();
$city->setIdOld( $city_key );
$city->setName( $city_value );
$province->addCity( $city );
}
$country->addProvince( $province );
}
$dm->persist( $country );
$dm->flush();
$dm->clear();
}
наверное, затем, что Доктрина кэширует объекты на диск - своеобразный прелоад ?Ну так для таких эпичных моментов нужно использовать обычный SQL, зачем тут ORM вообще?
пока не пробовал, но за идею спасибо )pilot911
а $dm->getUnitOfWork()->clear(); после flush() не помогает?
доктрина виновата в кривой очистке памятиpilot911
Ты хочешь в памяти создать 100.000 объектов PHP, чтобы потом разом их махнуть в базу? А в том, что памяти при этом разумеется не хватает, виновата Доктрина?
Ну, если у тебя то же самое получится без доктрины, то уже, думается, орден можно будет требовать....
в цикле в массивахpilot911
Ну из кода ваще-то непонятно где именно там 100000.
открыл Америку. Если надо допустим перелопатить целую большую таблицу данных всегда надо принимать во внимание что в ORM возможны утечки памятитак что вопрос актуальный - пока на Доктрину в проектах с большими датасетами полагаться не стоит
Хотя находятся чудаки (вроде меня), которые пишут свою ОРМПоэтому в таких случаях часто приходится писать запросы ручками