У меня есть коллекции клиентов, и каждая коллекция может содержать много клиентов. Этот код PHP зацикливает коллекции и клиентов внутри каждой коллекции. И сохраняет клиента в базе данных.
foreach ($collections as $key => $collection) {
foreach ($collection as $k => $client) {
$name = $client['name'];
//...
$clientObj = new Client();
$clientObj->setName($name);
//..
$clientObj->save();
}
}
Я хочу сгруппировать каждую коллекцию в один запрос Mysql, а затем перейти к следующей коллекции. Поскольку предыдущий код выполняет один запрос на клиента, а для повышения производительности нам нужен один запрос на коллекцию.
Как мы можем сделать это?
Добавить каждую запись в Doctrine_Collection
вызов save()
на объекте коллекции.
* Saves all records of this collection and processes the * difference of the last snapshot and the current data
Как пример:
$collection = new Doctrine_Collection('client');
$collection->add($client1);
$collection->add($client2);
$collection->save();
Других решений пока нет …