我在ClutchType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$currentUser = $this->currentUser;
$builder
->add('breedingPair')
->add('breedingPair', 'entity', array(
'class' => 'Breedr\BreedingPairsBundle\Entity\Pairs',
'property' => 'id',
'property' => 'breeding_pair_male',
'placeholder' => 'Choose a breeding pair',
'query_builder' => function(EntityRepository $er) use ($currentUser) {
return $er->createQueryBuilder('br')
->where('br.user = :currentUser')
->orderBy('br.breedingPairDate')
->setParameter('currentUser', $currentUser);
}
))
->add('laidDate')
->add('estimatedHatchStart')
->add('estimatedHatchEnd')
->add('hatchDate')
->add('eggAmount')
->add('breedingSeason')
;
}
哪种方法可以正常工作并将雄性带入繁殖对中。我该怎么做才能在下拉列表中显示男性和女性的名字?我试过了:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$currentUser = $this->currentUser;
$builder
->add('breedingPair')
->add('breedingPair', 'entity', array(
'class' => 'Breedr\BreedingPairsBundle\Entity\Pairs',
'property' => 'id',
'property' => 'breeding_pair_male',
'property' => 'breeding_pair_female',
'placeholder' => 'Choose a breeding pair',
'query_builder' => function(EntityRepository $er) use ($currentUser) {
return $er->createQueryBuilder('br')
->where('br.user = :currentUser')
->orderBy('br.breedingPairDate')
->setParameter('currentUser', $currentUser);
}
))
->add('laidDate')
->add('estimatedHatchStart')
->add('estimatedHatchEnd')
->add('hatchDate')
->add('eggAmount')
->add('breedingSeason')
;
}
但显然你不能在房产中显示多个价值。
所以我现在的样子是这样的:
但我希望它能显示出彼此相邻的男性和女性名字。目前它只是拉着男性的名字。
这是我的SQL表,显示男性和女性的ID
答案 0 :(得分:2)
property
调用中的->add('breedingPair', 'entity'
选项可以设置为您喜欢的任何用户定义的方法,因此在您的Breedr\BreedingPairsBundle\Entity\Pairs
实体中,您可以定义一个返回所需字符串的方法,例如
public function getPairAsString()
{
return sprintf(
'%s & %s',
$this->breedingPairMale->getName(),
$this->breedingPairFemale->getName()
);
}
然后在ClutchType
中添加字段,如下所示:
$builder->add('breedingPair', 'entity', array(
'class' => 'Breedr\BreedingPairsBundle\Entity\Pairs',
'property' => 'pairAsString',
'placeholder' => 'Choose a breeding pair',
'query_builder' => function(EntityRepository $er) use ($currentUser) {
return $er->createQueryBuilder('br')
->where('br.user = :currentUser')
->orderBy('br.breedingPairDate')
->setParameter('currentUser', $currentUser);
}
))