Doctrine 条令冲淡了许多实体

Doctrine 条令冲淡了许多实体,doctrine,entity,flush,persist,Doctrine,Entity,Flush,Persist,当我尝试导入CSV格式的用户列表时,它会逐个刷新实体,而不是一次刷新N个实体 我试图创建一个刷新N次的代码,但最后出现了一个错误: ImportMemberFileHandler.php protected function import(Import $import, Workflow $stateMachine) { $limit = 100; $counter = 1; $rowsToImport = $this->rowRepository->find

当我尝试导入CSV格式的用户列表时,它会逐个刷新实体,而不是一次刷新N个实体

我试图创建一个刷新N次的代码,但最后出现了一个错误:

ImportMemberFileHandler.php

protected function import(Import $import, Workflow $stateMachine)
{
    $limit = 100;
    $counter = 1;
    $rowsToImport = $this->rowRepository->findRowsToProcess($import, $limit);

    foreach ($rowsToImport as $row) {
        try {
            if (0 === ++$counter % 10) {
                $this->importService->importRow($row, true);
                $this->importRepository->getEntityManager()->flush();
            } else {
                $this->importService->importRow($row, false);
            }
        } catch (\Exception $e) {
            $this->eventBus->dispatch(new ContinueImportMemberImportFile($import->getId(), $row->getLine()));

            return;
        }
    }
public function handleCreate(User $user, $flush): void
{
    $this->updatePassword($user, false);

    if (null === $user->getCover()) {
        $coverPath = sprintf('build/images/default_covers/user-default-cover-%s.jpg', random_int(1, 5));

        $user->setCoverUrl($this->assetExtension->getAssetUrl($coverPath));
    }

    $user->setFirstName(implode('-', array_map('ucfirst', explode('-', $user->getFirstName()))));
    $user->setLastName(implode('-', array_map('ucfirst', explode('-', $user->getLastName()))));

    if (null === $user->getLanguage()) {
        $user->setLanguage($user->getCommunity()->getInternationalizationSettings()->getLanguage());
    }

    /** @var WenityUser $wenityUser */
    $wenityUser = $this->wenityUserRepository->findOneBy([
        'email' => $user->getEmail(),
    ]);
    if (null === $wenityUser) {
        $wenityUser = $this->wenityUserFactory->createForUser($user);
        $this->em->persist($wenityUser);
    } else {
        $wenityUser->addUser($user);
    }

    if ($flush) {
        $this->em->flush();
        $this->dispatcher->dispatch(new UserEvent($user), UserEvents::USER_CREATED);
    }
}
ImportService.php

    public function importRow(ImportRow $importRow, $flush){
...
...
$flush ? $this->createMember($member, $importRow, $row, true) :
                $this->createMember($member, $importRow, $row, false);
}

    private function createMember(Member $member, ImportRow $importRow, array $row, $flush)
    {
$flush ? $this->memberHandler->handleCreate($member, true) :
            $this->memberHandler->handleCreate($member, false);
    }
MemberHandler.php

protected function import(Import $import, Workflow $stateMachine)
{
    $limit = 100;
    $counter = 1;
    $rowsToImport = $this->rowRepository->findRowsToProcess($import, $limit);

    foreach ($rowsToImport as $row) {
        try {
            if (0 === ++$counter % 10) {
                $this->importService->importRow($row, true);
                $this->importRepository->getEntityManager()->flush();
            } else {
                $this->importService->importRow($row, false);
            }
        } catch (\Exception $e) {
            $this->eventBus->dispatch(new ContinueImportMemberImportFile($import->getId(), $row->getLine()));

            return;
        }
    }
public function handleCreate(User $user, $flush): void
{
    $this->updatePassword($user, false);

    if (null === $user->getCover()) {
        $coverPath = sprintf('build/images/default_covers/user-default-cover-%s.jpg', random_int(1, 5));

        $user->setCoverUrl($this->assetExtension->getAssetUrl($coverPath));
    }

    $user->setFirstName(implode('-', array_map('ucfirst', explode('-', $user->getFirstName()))));
    $user->setLastName(implode('-', array_map('ucfirst', explode('-', $user->getLastName()))));

    if (null === $user->getLanguage()) {
        $user->setLanguage($user->getCommunity()->getInternationalizationSettings()->getLanguage());
    }

    /** @var WenityUser $wenityUser */
    $wenityUser = $this->wenityUserRepository->findOneBy([
        'email' => $user->getEmail(),
    ]);
    if (null === $wenityUser) {
        $wenityUser = $this->wenityUserFactory->createForUser($user);
        $this->em->persist($wenityUser);
    } else {
        $wenityUser->addUser($user);
    }

    if ($flush) {
        $this->em->flush();
        $this->dispatcher->dispatch(new UserEvent($user), UserEvents::USER_CREATED);
    }
}
公共函数handleCreate(成员$Member,$flush):void
{
$group=$member->getGroup()

UserHandler.php

protected function import(Import $import, Workflow $stateMachine)
{
    $limit = 100;
    $counter = 1;
    $rowsToImport = $this->rowRepository->findRowsToProcess($import, $limit);

    foreach ($rowsToImport as $row) {
        try {
            if (0 === ++$counter % 10) {
                $this->importService->importRow($row, true);
                $this->importRepository->getEntityManager()->flush();
            } else {
                $this->importService->importRow($row, false);
            }
        } catch (\Exception $e) {
            $this->eventBus->dispatch(new ContinueImportMemberImportFile($import->getId(), $row->getLine()));

            return;
        }
    }
public function handleCreate(User $user, $flush): void
{
    $this->updatePassword($user, false);

    if (null === $user->getCover()) {
        $coverPath = sprintf('build/images/default_covers/user-default-cover-%s.jpg', random_int(1, 5));

        $user->setCoverUrl($this->assetExtension->getAssetUrl($coverPath));
    }

    $user->setFirstName(implode('-', array_map('ucfirst', explode('-', $user->getFirstName()))));
    $user->setLastName(implode('-', array_map('ucfirst', explode('-', $user->getLastName()))));

    if (null === $user->getLanguage()) {
        $user->setLanguage($user->getCommunity()->getInternationalizationSettings()->getLanguage());
    }

    /** @var WenityUser $wenityUser */
    $wenityUser = $this->wenityUserRepository->findOneBy([
        'email' => $user->getEmail(),
    ]);
    if (null === $wenityUser) {
        $wenityUser = $this->wenityUserFactory->createForUser($user);
        $this->em->persist($wenityUser);
    } else {
        $wenityUser->addUser($user);
    }

    if ($flush) {
        $this->em->flush();
        $this->dispatcher->dispatch(new UserEvent($user), UserEvents::USER_CREATED);
    }
}
错误呢

    A new entity was found through the relationship 'AppBundle\Entity\User#community' that 
was not configured to cascade persist operations for entity: 
AppBundle\Entity\Community@000000003cb0341500000000374214ac. To solve this issue: Either 
explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this
 association in the mapping for example @ManyToOne(..,cascade={"persist"}). If you cannot find 
out which entity causes the problem implement 'AppBundle\Entity\Community#__toString()' to get a
 clue.
请不要犹豫,我可以问我更多的信息