Symfony中使用表单类型实体的Doctrine 2结果缓存

3
我在Doctrine中使用APC结果缓存,并在所有网站页面中使用实体类型的筛选表单,想要缓存它,但是当我将useResultCache()方法添加到方法中时,会出现异常。

传递给Choice字段的实体必须是已管理的

例如 ...->getQuery()->useResultCache(true, null, 'someindex')->getResult()

但是没有与实体类型表单一起使用的所有操作都可以正常工作。

有什么想法吗?


抛出了什么异常,它的信息是什么? - Crozin
1个回答

3

不知道您是否已经想出如何做到这一点,但这是我是如何做到的(花了半天时间弄清楚这个问题)。

/* in FormType.php */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $items = $options['entity_repository']
        ->findItems()
        ->useResultCache(true, 3600, 'my_cache')
        ->getResult();

    $choice_list = new ObjectChoiceList($items, 'name', array(), null, 'id');
    $builder->add('item', 'entity', array(
        'class' => 'MyBundle:Items',
        'multiple' => true,
        'expanded' => true,
        'choice_list' => $choice_list,
    ));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接