Symfony FormBuilderInterface在handleRequest上创建错误的查询

时间:2017-04-19 14:13:22

标签: php symfony doctrine symfony-forms

我在我的后端使用symfony2作为REST API。一切都运行正常,但随着数据库大小的增加,创建/更新操作变得越来越慢(目前~13秒!!)。

我调试了这种情况,发现handleRequest()上的FormInterface导致了问题。

POST请求正文

{
  "name": "Group1",
  "users": ["id1", "id2", "id3"]
}

我使用此接收的请求在后端创建表单。

$form = $this->formFactory->createNamed('group', 'group', $groupData, array('method' => $request->getMethod()));

然后,$form->handleRequest($request);

当调用handleRequest时,它会与其他查询一起生成此查询,这就是问题所在。

db.users.find({}).sort([ ]);

它正在加载整个集合,这是因为构建表单时的这一行:

$builder->add('users',
              'document', 
              array('class' => 'Test\Bundle\CoreBundle\Document\User', 
                    'multiple' => true,
                    'property' => 'id'
                   )
             );

我在建造者身上做错了吗?现在我已经重新编写了我的补丁/帖子请求,只加载了所需的用户,将它们添加到组中并在不使用FormInterface的情况下保留组。

0 个答案:

没有答案