我有一個從兩個相關實體'Jobs'和'Scope'收集數據的表單。作業數據成功添加到數據庫中,但我無法獲取要添加的作用域實體,這也需要從作業條目創建的唯一標識。順便說一句,我正在使用教條。Symfony 2 persistence使用從第一個實體生成的ID形式的2個實體
這裏是jobsType:
class jobsType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('jobNumber', null, array('label' => 'Job Number','attr' => array('placeholder'=>'Code used for job')))
->add('description', null, array('label' => 'Job Description',))
;
$builder->add('scopes', new scopeType())
;
}
public function getName()
{
return 'jobs';
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Baker\TimeSlipBundle\Entity\Jobs',
));
}
}
這裏是scopeType
class scopeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('description', 'entity', array('label' => 'Scope', 'required' => false,
'class' => 'BakerTimeSlipBundle:Scope',
'query_builder' => function(EntityRepository $er){
return $er->createQueryBuilder('s')
->orderBy('s.description', 'asc');
},
'property' => 'description',
'multiple' => false,
'expanded' => false,
'empty_value' => false,
'attr' => array('class' => 'form-inline'),
'label_attr' => array('class' => 'required')
))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Baker\TimeSlipBundle\Entity\Scope',
));
}
public function getName()
{
return 'scope';
}
}
這裏是我的控制,我覺得這裏的問題是,我不是合格的範圍()實例的形式建設者。我不知道該怎麼做。該實體映射正確。
class JobsController extends Controller
{
public function indexAction($limit, Request $request)
{
$jobs= new Jobs();
$scope = new Scope();
$fname=$limit;
$form = $this->createForm(new JobsType(),$jobs, array(
'method' => 'POST',
));
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($jobs);
$em->persist($scope);
$em->flush();
return $this->redirectToRoute('company',array ('limit' =>'Job Submitted Successfully'));
}
return $this->render(
'BakerTimeSlipBundle:Jobs:index.html.twig',
array('fname' => $fname,
'form' => $form->createView()
)
);
}
}
}
在這裏的任何幫助將不勝感激。下面列出的錯誤消息,當我試圖進入範圍:
在執行時發生異常 '(?,?,?)INSERT INTO範圍(描述,jobsId,jobsid)VALUES' 使用參數[空, NULL,NULL]: SQLSTATE [42000]:語法錯誤或訪問衝突:1110列「jobsId」指定了兩次
當然沒有關係,但你應該有你的表單處理請求只有'如果($請求 - > isMethod( 'POST')){}'。另外,您應該通過執行'$ jobs = $ form-> getData();'來檢索'$ jobs'。 – D4V1D
感謝您的建議,我認爲允許教條來處理您必須使用$ this-> getDoctrine() - > getManager()的依賴關係。 – user3248331