【发布时间】:2017-12-15 10:18:54
【问题描述】:
我正在尝试使用 symfony 中的 @ParamConverter 将多个参数动态传递到路由 url。下面是我的架构结构
bookpermit
id | userfk | bookfk |
1 | 6 | 6 |
2 | 6 | 7 |
3 | 7 | 7 |
4 | 8 | 8 |
books
id | name | uerfk |
1 | xyz1 | 6 |
2 | xyz2 | 7 |
3 | xyz3 | 8 |
下面是我的 routing.yml 文件的 sn-p
display_book_by_permission:
pattern: /displaybookbypermission/{user}
defaults: { _controller: xxxBundle:Books:display, _format: ~ }
requirements:
_method: GET
我删除了 bookpermit 的参数,因为我想从数据库中动态获取
下面是包含参数转换器的控制器定义
/**
* @Route("/displaybookbypermission/{user}/{bookpermit}")
* @ParamConverter("user", class="xxxxBundle:Users")
* @ParamConverter("bookpermit", class="xxxxBundle:BookPermit")
* @Template()
*/
public function displayAction(Request $request, $user, $bookpermit)
{
$em = $this->getDoctrine()->getManager();
$bookLists= $em->getRepository("xxxBundle:Books")->findBy(
array(
"usersfk" => $user,
"usersfk" => $bookpermit
)
);
$data = array();
foreach ($bookLists as $bookList)
{
array_push($data, $this->serialize($bookLists));
}
$response = new Response(json_encode($data), 200);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
我这样做的尝试是能够在调用 url 时返回此结果 xyz2+xyz1
http://localhost:88/books/web/app_dev.php/displaybookbypermission/6
【问题讨论】:
-
首先,您为什么同时使用 yml 路由和注释路由?其次,在您的
bookpermit表中,没有一个bookfk值引用books.id列。第三,books表不应包含对用户的任何引用,因为看起来书籍和用户之间的关系是bookmermit表。 -
bookfk 指的是 books 表中 usersfk 的(外键)。 books 有一个用户外键,而 bookspermit 有一个外键 bookfk
-
我在 symfony 文档中看到了路由。请问如何将其转换为 yml 路由
-
我们首先需要一些解释。此功能代表用户、书籍以及用户与书籍“交互”(出租、阅读等)的权限,对吧?这条路线的目的是获取允许提供的用户与之交互的书籍,对吧?
-
权限表中非常正确。所以我们可以说 id 为 6 的用户只能被 6 和 7 的用户允许预订
标签: php symfony doctrine-orm