路由模型绑定,提供者,中间件,构造函数或特定于功能的

时间:2019-07-04 10:03:52

标签: laravel

在大多数项目中,通常会有一条路线,其中有多个参数

/posts/1/comments/1

您要确保评论1是帖子1的一部分 您可以采用多种方式。

Abort_if()或Abort_unless()

abort_if($post->id != $comment->post_id, 403);

abort_unless($post->id == $comment->post_id, 403);

缺点是,这需要在与注释和发布交互的每个控制器功能处进行。很多重复的代码。不是很干

中间件

您可以制作一个进行此检查的中间件,并将其放置在所需的路由上。

与此相对的是,您需要将其放置在所需的每条路线上,就像中止选项一样。

路由模型绑定

这似乎是最好的选择,这是从帖子模型中进行查询的一种全局方式。

$posts->comments()->where($comment->id);

这里的缺点,如果您将“评论”绑定为始终在帖子的关系中进行搜索,那么您将永远无法做到

/comments/1

您有什么想法?似乎找不到真正的最佳实践或确定的答案。

0 个答案:

没有答案