我很难弄清楚如何将参数从控制器中的方法传递给资源。
在web.php中我有这条路线:
Route::get('location/{id}','Controller@getLocation');
在控制器类的方法下面:
public function getLocation($id){
$result= //query
return new LocationResource($result);
}
我想将$id
从控制器传递给LocationResource。我能怎么做?
感谢
答案 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;
}