Допустим, я хочу сделать массовое обновление пользователя в моем UsersController
.
В моем UsersController
я делаю:
foreach ($users as $user) {
$userService = new UserService();
$user->updateUser($data);
}
Если пользователей много,он может работать медленнее, потому что метод UserService :: updateUser просто делает persist()
/ flush()
Так что мне интересно, может ли быть хорошей идеей сделать что-то подобное:
class UserService {
public function setUseTransaction($flag)
{
$this->useTransaction = $flag;
return $this;
}
public function updateUser($data)
{
// some data mapping
$entityManager->persist($user);
if ($this->useTransaction) {
$entityManager->flush();
}
}
public function commit()
{
$entityManager->flush();
}
}
Тогда в моем UsersController
я могу сделать:
$userService = new UserService();
$userService->setUseTransaction(true);
foreach ($users as $user) {
$userService = new UserService();
$user->updateUser($data);
}
$userService->commit();
Что вы думаете?