Laravel 5.5将参数从控制器传递给资源

时间:2018-01-19 09:11:48

标签: php laravel

我很难弄清楚如何将参数从控制器中的方法传递给资源。

在web.php中我有这条路线:

Route::get('location/{id}','Controller@getLocation');

在控制器类的方法下面:

public function getLocation($id){ 
    $result= //query
    return new LocationResource($result);
}

我想将$id从控制器传递给LocationResource。我能怎么做? 感谢

3 个答案:

答案 0 :(得分:0)

您正在做正确的事情,只需执行查询即可获取对象:

$result = Location::find($id);

在资源中,您可以通过$this

访问此对象
'id' => $this->id,

https://laravel.com/docs/5.5/eloquent-resources#resource-responses

答案 1 :(得分:0)

你几乎就在那里。您还应该添加一些安全检查:

public function getLocation($id){ 
    if ($location = LocationResource::find($id)) {
        return $location;
    }
    abort(404, 'location ' . $id . ' not found');
}

答案 2 :(得分:0)

这并不困难

在资源public function toArray($request)的第一个功能之前 创建一个构造函数。知道您可以使用$this->result

public function __construct($result)
{
    $this->result = $result;
}