Laravel - 获取模型中的路由参数

Laravel - Get Route Parameter in a Model

我正在使用 Laravel 5.5 我有一个 'Post' 模型。在那个模型中,我想使用一个路由参数(比如 userId)。我在 Post Controller 中有这个 id。

public function getPosts($userId)
{      
    $posts = Post::latest()->paginate(8);
    return Response::json($posts);
}

我想使用 Post 模型中的 $userId 来获取更多信息。 如何从 Post 模型访问此参数?我应该使用 session 来存储 userId 值并尝试使用它吗?还有其他办法吗?

您可以使用 request() 助手:

// Get a specific route parameter 
request()->route()->parameter('userId')

// Get all route parameters 
request()->route()->parameters()

假设您在 Post 模型上有一个函数:

// Post.php

public function doSomething()
{
    if (request()->route()->parameter('userId') === 1) {
        return 'some value';
    }
    return 'another value';
}

你可以这样做:

request()->route('userId')

接受的答案是完全正确的,但我只想补充一点。

注意:如果您正在使用:

request()->route()->parameter('userId');

您实际上可能会得到整个 User 对象,而不仅仅是 ID,因为 Laravel 可以自动在您的 User table 中找到条目并将其注入到请求中。

如果发生这种情况,您可能会遇到一些讨厌的、不合逻辑的错误,但是 解决方案很简单:只需将 ->id 添加到 request line(或您的 ID 属性的任何名称)。像这样:

request()->route()->parameter('userId')->id;