Laravel - 在模型中获取路径参数

时间:2018-02-18 11:43:28

标签: laravel laravel-5 model-view-controller laravel-routing

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

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

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

3 个答案:

答案 0 :(得分:4)

您可以使用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';
}

答案 1 :(得分:1)

你可以这样做:

request()->route('userId')

答案 2 :(得分:0)

接受的答案是完全正确的,但我只想添加一件事。

注意:(如果您正在使用)

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

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

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

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