我在两个实体之间有两个OneToMany关系:Serie --->情节和剧集--->音乐如下:
class Serie{
........
/**
* @ORM\OneToMany(targetEntity="Episode", mappedBy="serieId")
* @ORM\OrderBy({"numeroE" = "ASC"})
*/
private $episodes;
........
}
class Episode{
........
/**
* @var integer
*
* @ORM\ManyToOne(targetEntity="Serie", inversedBy="episodes")
* @ORM\JoinColumn(name="serie_id", referencedColumnName="id")
*/
private $serieId;
/**
* @ORM\OneToMany(targetEntity="Musique", mappedBy="episodeId")
* @ORM\OrderBy({"min" = "ASC", "sec" = "ASC"})
*/
private $musiques;
}
class Musique{
........
/**
* @ORM\ManyToOne(targetEntity="Episode", inversedBy="musiques")
* @ORM\JoinColumn(name="episode_id", referencedColumnName="id")
*/
private $episodeId;
........
}
在我的My \ ContentBundle \ Form \ Type \ MusiqueType中,它代表一个音乐实体表格,我有:
class MusiqueType extends AbstractType{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('episodeId', 'entity', array(
'class' => 'MyContentBundle:Episode' ,
)
->add('serieId', 'entity', array(
'class' => 'MyContentBundle:Serie' ,
'mapped' => false
)
;
}
}
在我看来,我需要显示“剧集”和“剧集”。领域。但是,由于我的数据库中有大约一千集,我想在此字段中仅显示属于所选系列的剧集。
我打算使用一些ajax动作来做到这一点,但我想知道:有更简单的方法吗?
谢谢!
答案 0 :(得分:0)
通过向表单添加自定义查询,您可以更加具体地生成表单:
use Doctrine\ORM\EntityRepository;
// ...
$builder->add('users', 'entity', array(
'class' => 'AcmeHelloBundle:User',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')->orderBy('u.username', 'ASC');
},
));
有关详细信息,请参阅SF2文档的entity Field Type页。