【发布时间】:2016-11-27 10:59:01
【问题描述】:
Laravel 路由中的一个常见设置是使用嵌套资源和路由模型绑定。这允许很好的逻辑 url 代表模型在数据库中彼此之间的实际关系。 /library/section/book/ 就是一个例子。书归部门所有,部门归图书馆所有。但是在使用路由模型绑定的时候,这些资源的id就变成了模型,彼此都不知道。 /1/7/234 将返回这些资源的模型,但不能保证它们正确相关。书 234 可能不属于第 7 节,第 7 节可能不属于图书馆 1。我经常在每个控制器的顶部有一个方法来处理我所谓的关系测试。这个函数可以在 Book 控制器中找到。
private function relationshipCheck($library, $section, $book)
{
if(library->id == $section->library_id) {
if($book != false) {
if($section->id == $book->section_id) {
return true;
} else {
return response()->json(["code" => 401], 401);
}
} else {
return true;
}
} else {
return response()->json(["code" => 401, 401);
}
}
使用这些代表关系的路由的正确方法是什么?有没有更自动化的方法来做到这一点?当关系都是一对多时,是否有充分的理由忽略除最后一个资源之外的所有内容?
【问题讨论】: