gpt4 book ai didi

php - 形式上的一对一关联?

转载 作者:可可西里 更新时间:2023-11-01 13:12:40 25 4
gpt4 key购买 nike

在symfony 2.0中,如何在表单中使用一对一关联创建下拉列表?你们能举个好例子吗?

最佳答案

我会尽量按照我理解的方式回答你的问题。假设我有一个绑定(bind)到单个 University 对象的 Faculty 对象。因此,在用于创建或编辑教师的表单中,我显示了数据库中所有大学的组合框,用户从中选择一个。有一种特殊的 Symfony 字段类型可以做到这一点:实体类型。下面是我在用于创建教师表单的 FacultyType 对象中使用的 buildForm 方法的代码:

// Application\AcmeBundle\Form\Type\FacultyType
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('name');
$builder->add('university', 'entity', array(
// The class of the entity used as a combo box item
'class' => 'AcmeBundle:University',

// The property of the entity displaying the entity as text
'property' => 'name',

// The query builder used to populate the combo box, accepts
// a QueryBuilder object or a \Closure like below
'query_builder' => function(EntityRepository $repository) {
// This will return a query builder selecting all universities
return $repository->createQueryBuilder('u');
}
));
}

注意:实体字段类型还有其他属性可以设置,我请你看这个page了解更多信息。

呈现后,这将显示一个组合框,其中包含我在数据库中设置的所有大学。当用户保存表单时,选择的大学将通过 setter 分配给绑定(bind)到表单的教师对象。您可能会呈现一个下拉列表而不是组合框。如果您需要选择多个实体,字段类型实体的 'multiple' 选项可能会有用。

也就是说,我展示的示例不是一对一关系,而是 Faculty 对象的多对一关系和 的一对多关系>大学对象。一对一关系更像是一种关系,其中 University 具有唯一的 Address。在这种情况下,组合框不会有用,因为大学只能有一个地址,因此子表单会更合适。如果它有很多地址,那么它就变成一对多的关系,就像大学和它的院系之间的关系。

不确定这是否能正确回答您的问题,但我希望它能引导您找到最终解决方案。

问候,马特

关于php - 形式上的一对一关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com