我有类别和章节之间的OneToMany关系。我想要做的是实现部分的编辑。所以我到目前为止的编辑操作看起来像这样:
/**
*
*
* @Route("category/{category_id}/section/{id}/edit", name="section_edit")
* @Method("GET")
* @Template()
*/
public function editAction($category_id, $id)
{
$em = $this->getDoctrine()->getManager();
$category = $em->getRepository('MyOwnBundle:Category')->find($category_id);
if (!$category) {
throw $this->createNotFoundException('Unable to find Category entity.');
}
////.....
}
一切都很简单,但我真的不知道如何浏览属于$ category的部分。要执行编辑,我需要这个特定的记录,其id == $ id。显然,我不能简单地浏览所有部分,因为那时我不知道我发现的是否真的属于$ category。任何允许我这样做的简单方法,或者我应该逐个简单地遍历这个$category->getSections()
?
答案 0 :(得分:0)
解决方案非常简单。
您可以依靠ParamConverter
加载necesarry对象。 如果找不到任何一个
您可以阅读更多相关信息here。别忘了导入(use
)ParamConverter注释!
/**
* @Route("category/{category_id}/section/{id}/edit", name="section_edit")
* @ParamConverter("category", class="AcmeBundle:Category", options={"id": "category_id"})
* @Method("GET")
* @Template()
*/
public function editAction(Category $category, Section $section){
// both category and section are fully loaded, no need to go to doctrine or check if they are null
if ( !$section->getCategories()->contains($category)){
throw $this->createNotFoundException('Invalid request.');
}
...
the rest of your logic
...
}