2017-01-09 30 views
0

我有我的表單類型的EntityType類,它可以從我的表中生成數據。如何在symfony 3中設置選定的EntityType字段

我的問題是當我嘗試使用教條方式將其插入到我的數據庫中時,該實體類型字段返回{}值。

這裏的確切數據庫錯誤:

An exception occurred while executing 'INSERT INTO sub_agent (company_id, name, email_address, telephone_no, mobile_no, website, registered, ip) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [{}, "test", "[email protected]", "test", "test", null, "2017-01-09 09:15:42", "127.0.0.1"]: 

當我調試實體領域的控制器使用var_dump我看到company_id是從我company entity class返回一個對象。

這裏是我的sub_agent_type形式

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('company_id', EntityType::class, array(
     'label' => 'Company', 
     'mapped' => false, 
     'required' => true, 
     'class' => 'SwipeBundle\Entity\Company', 
     'choice_label' => 'name', 
     'choice_value' => 'id', 
     'expanded' => false, 
     'multiple' => false, 
     'placeholder' => 'Choose a Company', 
     'constraints' => array(
      new NotBlank(array("message" => 'Company name is required.')), 
     ),    
    )); 
} 

如何設置我的實體領域(下拉列表)對我的表格選擇的值在我的數據庫保存?這裏是我的實體字段的生成的小枝。

<select id="sub_agent_company_id" name="sub_agent[company_id]" required="required"> 
    <option value="" selected="selected">Choose a Company</option> 
    <option value="20">ABC</option> 
    <option value="21">EFG</option> 
    <option value="22">HIJ</option> 
</select> 

這裏是我的控制器:

if ($form->isSubmitted() && $form->isValid()) { 

    $data = $form->getData(); 

    $sub_agent_name = $data->getName(); 

    $company_id = $data->getCompanyId(); 

    var_dump($company_id); exit 
+0

只需使用'company'場,而不是'company_id'。 – yceruto

+0

請進一步解釋 – phpmeter

+0

對不起,請參閱http://symfony.com/doc/current/doctrine.html#add-mapping-information關於映射數據庫和http://symfony.com/doc/current/forms的更多詳細信息的.html#創建表單類 – yceruto

回答

1

在您的類別的實體,你應該有:

public function __toString() { 
    return $this->id; 
} 
相關問題