Create
,Delete
,Show
部分也正常工作。我不知道怎么了。
这是我的请求(当我调用资源路由的PUT
时):
============
Request body
============
name: John doe
detail: An insteresting detail
type: A fancy type
===============
Request Headers
===============
Accept: application/json
Authorization: Bearer my_secret_token
错误
“消息”:“没有对模型[App \ Product]的查询结果。”
Api \ Controller
public function update(Request $request, Product $product)
{
$input = $request->all();
$validator = Validator::make($input, [
'name' => 'required',
'detail' => 'required'
]);
if($validator->fails()){
return $this->sendError('Validation Error.', $validator->errors());
}
$product->name = $input['name'];
$product->detail = $input['detail'];
$product->save();
return $this->sendResponse($product->toArray(), 'Product updated successfully.');
}
答案 0 :(得分:2)
如果您使用的是路由模型绑定(看起来如此),请确保使用正确的端点来更新资源:
PUT /products/{product}
// so this means, for example:
PUT /products/3
然后,Laravel将自动找到id
为3的产品。
public function update(Request $request, Product $product) // <-- here is injected.
{
// the rest of your code..
}
另一个选择是手动查找资源。如果您的路线是这样的:
PUT /products/{id}
如果要轻松管理响应,请按以下步骤查找:
public function update(Request $request)
{
// find it
$product = Product::find($request->get('id'));
// check if exists
if (! $product)
{
return response()->json(['errors' => 'This product does not exist, dude!'], 404);
}
// the rest of your code..
}
或这样引发异常:
public function update(Request $request)
{
// find it
$product = Product::findOrFail($request->get('id'));
// the rest of your code..
}
答案 1 :(得分:1)
输入您的项目文件夹
cd /laravel/your/path_of/api_project
并执行以下命令
php artisan route:list
,你将有一个包含方法的名称一个完整的表来使用他们的URL和每个方法来使用(POST,GET,...)
输出示例----
| PUT|PATCH | api/companys/{company}| companys.update| App\Http\Controllers\CompanysController@update|