我正在學習symfony框架,並有一個大問題。我有兩個數據庫表:類別(主鍵:categoryid)和產品(主鍵:productid和外鍵:category_categoryid)。symfony2構建表單實體oneToMany
在控制器中添加一個「editAction」,用於編輯產品數據(包括字段category_categoryid)並保存在數據庫中。
表單必須包含用於分類產品的類別下拉列表。
代碼:
在ORM陽明
實體關係:產品 ...
manyToOne:
category:
targetEntity: Category
inversedBy: products
joinColumn:
name: category_categoryid
referencedColumnName: categoryid
實體:分類 ...
oneToMany:
products:
targetEntity: Product
mappedBy: category
表/類型 ProductType
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
$builder->add('category_categoryid', 'entity',
array('class' => 'SysCatalogoBundle:Category',
'property' => 'name',));
...
}
ProductController的
public function editAction(Request $request)
{
$id = 1;
$em = $this->getDoctrine()->getManager();
$products= $em->getRepository('SysCatalogoBundle:Product')->find($id);
$form = $this->createForm(new ProductType(), $products);
...
}
視圖renderize一個形式與類型的元件中的列表,但沒有選擇產品類別(保存在DB)。我證明使用類型「query_builder」,但沒有工作,也嘗試類「新類別」沒有工作eather。如果我使用更簡單的數組(array(1,2,3))的「choice」類型,則選擇該類別。
這可能是問題所在? ORM實體的關係? 我遵循官方的symfony2文檔。
我非常感謝您的幫助! (對不起,我的英語)
如果在您的編輯控制器操作中調試(或'var_dump')是'$ products-> category'有效嗎? – cheesemacfly