How-to: Optimize Symfony's forms' performance?

前端 未结 2 954
鱼传尺愫
鱼传尺愫 2021-02-18 16:14

I have a form that is the bottleneck of my ajax-request.

    $order = $this->getDoctrine()
        ->getRepository(\'AcmeMyBundle:Order\')
        ->fin         


        
2条回答
  •  天涯浪人
    2021-02-18 16:50

    The described behavior looks as the work of the guesser. I have the feeling that there is need to show an some additional code (listeners, VariantType, WebsiteType, PartnerType).

    Let's assume a some class has association variant to Variant and FormType for this class has code ->add('variant') without explicit specifying type (as I see there is a lot of places where the type is not specified). Then DoctrineOrmTypeGuesser comes in the game.

    https://github.com/symfony/symfony/blob/2.7/src/Symfony/Bridge/Doctrine/Form/DoctrineOrmTypeGuesser.php#L46

    This code assign the entity type (!) to this child. The EntityRepository::findAll() is called and all variants from DB are hydrated.

    As for another form optimization ways:

    • Try to specify type in all possible cases to prevent a type guessing;
    • Use SELECT with JOINs to get an order as new sub-requests to DB are sent to set an underlying data for an every form maps relation;
    • Preserve keys for collection elements on a submission as a removing of a single element without a keys preserving will trigger unnecessary updates.

提交回复
热议问题