排除ManytoOne阵列集合/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有ManyToOne关系,反之亦然(Movie->Tag=OneToMany):

class Tag
{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORMColumn(type="string")
*/
protected $name;
/**
 * @ORMManyToOne(targetEntity="Movie", inversedBy="videotags")
 * @ORMJoinColumn(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 
    ;
}

感谢您的帮助!

谢谢!

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

文件中对此进行了解释。这里有一个快速的例子:

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

最新更新