1

我在球员教练之间建立了多对多的关系。每个球员可以有很多教练,每个教练可以有很多球员。

如果他愿意,教练可以创建许多团队。在创建团队的整个过程中,他必须选择将成为他一部分的球员。

教练只能在他的球队中添加他有特定权限的球员。这是当前问题的外部过程,但它表明并非数据库中的所有玩家都可以显示在表格中,而只有他有权这样做的玩家。

必须显示的球员可通过以下方式获得:

 $players = $this->get('security.context')->getToken()->getUser()->getPlayers();

现在,当我显示创建团队的表单时,我正在执行以下操作:

$builder->add('players', 'entity', array(
'class' => 'OSCUserBundle:Player',
'property'     => 'name',
'multiple'     => true

));

然而,这给了我数据库中所有可用的玩家。有没有办法指定 symfony2 仅以某些玩家的形式显示?

4

1 回答 1

1

您可以使用query_builder参数仅查询您想要的玩家

所以例如

    $builder->add('players', 'entity', array(
    'class' => 'OSCUserBundle:Player',
    'property'     => 'name',
    'multiple'     => true,
    'query_builder' => function(EntityRepository $er) {
        return $er->createQuery('SELECT p FROM YourBundle:Player p WHERE p.active = 1')
    },

或者,如果您已经有了想要的玩家列表,您可以使用选择选项

于 2013-06-30T02:32:00.357 回答