让我们考虑如下场景:
实体Car有多对多的CarType,这是不同类型的列表,每种类型可以是活动的或不活动的。
汽车表单:
$builder->add('type', 'entity', array(
            'label'         => 'Car Type',
            'class'         => 'SomeBundle:CarType',
            'query_builder' => function (EntityRepository $er) {
                $qb = $er->createQueryBuilder('type')
                        ->where('type.status = :status')
                        ->setParameter('status', 'active')
                ;
                return $qb;
            }
        ));在创建阶段,用户使用活动Type创建Car。假设我有一个管理页面将Type标记为活动/非活动。
处理与非活动Type相关的Car编辑阶段的最佳方法是什么?换句话说,如果某个Car与在某个点处于活动状态但不再处于活动状态的任何Type有关系,则该选项将不会显示在下拉列表中。
处理这样的用例最好的方法是什么?在不同的时间范围内,dropdwon项目可以有不同的状态,但查询只返回活动的项目?
一种方法是警告用户Car正在使用一些非活动的Type,但还有其他更好的方法吗?
发布于 2017-04-13 17:09:53
你可以在管理员级别处理这个问题(例如,如果carType仍在使用,则不能使其处于非活动状态)
或者你用用户级别来处理:
您只建议选择活动的汽车+非活动的当前用户选择。
这样,用户只能选择更改为活动类型的汽车或保留其过时的类型
$qb = $er->createQueryBuilder('type')
    ->where('type.status = :status')
    ->orWhere('id = :currentTypeId')
    ->setParameter('currentTypeId', $someId)
    ->setParameter('status', 'active');
https://stackoverflow.com/questions/43380034
复制相似问题