排除ManytoOne Array Colletion / Formbuilder中的某些值

时间:2012-03-21 18:08:51

标签: symfony formbuilder

我无法在Symfony2中获取一个公式,我希望在数组集合中排除某些值 - 或者我不得不说我不知道​​如何(在哪里排除它们)。

这是我的新标签行动:

public function newTagAction()
{
    $tag = new Tag();
    $form = $this->createForm(new tagType(), $tag);
    return $this->render('MyMyBundle:Admin:newTag.html.twig', array('form' => $form->createView()));

}

和Tag.php实体,它与Movie和Vice verca有关的ManyToOne关系(Movie-> Tag = OneToMany):

class Tag
{

/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\Column(type="string")
*/
protected $name;

/**
 * @ORM\ManyToOne(targetEntity="Movie", inversedBy="videotags")
 * @ORM\JoinColumn(name="movie_id", referencedColumnName="id")
 */
protected $movie;

// ...

在TagType.php表单中,它说:

class TagType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('name')
        ->add('movie') // This is where certain movies should be excluded, it displays an array collection of all movies 
    ;
}

任何帮助表示赞赏!

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用自定义查询来获取所需的结果。

documents中对此进行了解释。这是一个简单的例子:

$builder->add('movie', 'entity', array(
    'class' => 'MyMovieBundle:Movie',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')
            ->where('u.name = ?1');
    },
));