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;
我正在使用 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;